struts2表单验证总是报找不到action 不加这个文件就没问题

chaohua20 2011-08-25 11:25:06
先从struts2配置文件开始贴吧

<package name="admin" extends="struts-default" namespace="/BlackAdmin">
<action name="newsSectionAction_*" class="newsSectionAction" method="{1}">
<result name="newsSection">NewsSection.jsp</result>
<result name="listColumns">listColumns.jsp</result>
</action>
</package>

spring 配置文件 我想这两个配置应该没有错吧要不然不会只有表单验证报错

<bean id="newsSectionDao" class="com.onionportal.blackadmin.dao.imp.NewsSectionDaoImp">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<bean id="newsSectionService" class="com.onionportal.blackadmin.service.imp.NewsSectionServiceImp">
<property name="newsSectionDao" ref="newsSectionDao"></property>
</bean>

<bean id="newsSectionAction" class="com.onionportal.blackadmin.action.NewsSectionAction">
<property name="newsSectionService" ref="newsSectionService"></property>
</bean>


Action类 NewsSectionAction.java

package com.onionportal.blackadmin.action;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import com.onionportal.blackadmin.service.NewsSectionService;
import com.onionportal.blackadmin.service.imp.NewsSectionServiceImp;
import com.onionportal.orm.NewsPart;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

/**
* @author <a href="mailto:onion_xiang@126.com">Onion.Xiang</a>
* 新闻栏目管理Action
*/
public class NewsSectionAction extends ActionSupport implements ModelDriven<NewsPart>{

/**序列化此类*/
private static final long serialVersionUID = -4087314881991815540L;
/**新闻栏目业务逻辑层注入*/
private NewsSectionService newsSectionService;
/**新闻栏目列表*/
private List<NewsPart> newsPartList=new ArrayList<NewsPart>();
/**Action 前台显示消息*/
private String actionMsg;
/**上级栏目ID*/
private String parentid;

/**采用模型驱动*/
private NewsPart model=new NewsPart();//用于封装新闻栏目属性的模型实例

public NewsPart getModel() {
return model;
}


public void setModel(NewsPart model) {
this.model = model;
}


/**
* 获得所有的新闻栏目
* 新闻栏目浏览
* @return newsSection
*/
public String newsBrowseClumns(){
if(actionMsg!=null){
try {
actionMsg = new String(actionMsg.getBytes("ISO8859-1"),"gbk");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
addActionMessage(actionMsg);
}
newsPartList=newsSectionService.getNewsPart();
return "newsSection";
}

/**
*处理一级新闻栏目下拉列表请求
*@return String listColumns
*/
public String listColumns(){
newsPartList=newsSectionService.getNewsPart();
NewsPart firstnode = new NewsPart();
firstnode.setId(-1);
firstnode.setPartName("无上级栏目");
newsPartList.add(0,firstnode);
return "listColumns";
}

/**
*添加新闻栏目
*@type String
*/
public String addColumns(){
System.out.println(parentid);
NewsPart news=new NewsPart();
news.setNewsPart(model.getNewsPart());
news.setPartExplan(model.getPartExplan());
System.out.println("===="+model.getPartName()+"==="+model.getPartExplan()+"==="+this.getParentid());
return "newsSection";
}



public String getParentid() {
return parentid;
}


public void setParentid(String parentid) {
this.parentid = parentid;
}


public void setNewsSectionService(NewsSectionService newsSectionService) {
this.newsSectionService = newsSectionService;
}


public void setNewsSectionService(NewsSectionServiceImp newsSectionService) {
this.newsSectionService = newsSectionService;
}

public String getActionMsg() {
return actionMsg;
}

public void setActionMsg(String actionMsg) {
this.actionMsg = actionMsg;
}

public List<NewsPart> getNewsPartList() {
return newsPartList;
}

public void setNewsPartList(List<NewsPart> newsPartList) {
this.newsPartList = newsPartList;
}



}



表单验证 xml NewsSectionAction-newsSectionAction_addColumns-validation.xml

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<!-- 对新闻栏目表单中的两个必填字段进行必填验证 -->
<validators>
<field name="partName">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>${getText("columns_validation_name")}</message>
</field-validator>
</field>
<field name="partExplan">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>${getText("columns_validation_code")}</message>
</field-validator>
</field>
</validators>

页面代码

<s:form action="newsSectionAction_addColumns" theme="simple">
<table width="300" align="center" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="right"><s:text name="columns_label_parent"/>:</td>
<td>
<s:url id="tolist" value="newsSectionAction_listColumns.action">
<s:param name="parentid" value="parentid" />
</s:url>
<sx:div href="%{tolist}" id="norefresh" theme="ajax">
</sx:div>
</td>
</tr>
<tr>
<td align="right"><s:text name="columns_label_name"/>:</td>
<td><s:textfield name="partName" size="22"/></td>
</tr>
<tr>
<td align="right"><s:text name="columns_label_code"/>:</td>
<td><s:textfield name="partExplan" size="22"/></td>
</tr>
</table>
<br>
<div align="center">
<sx:submit key="label_submit"/> 
<s:reset key="label_reset"/> 
<s:set name="label_return" value="%{getText('label_return')}"/>
<input type="button" name="btn_ret" value="${label_return}" onClick="window.location='newsSectionAction_browseColumns.action';">
</div>
</s:form>

错误代码

No result defined for action com.onionportal.blackadmin.action.NewsSectionAction and result input
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:375)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:277)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:270)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at


不加这个表单验证不会出现错误
...全文
161 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chaohua20 2011-08-26
  • 打赏
  • 举报
回复
问题已解决 把这个theme="simple"去掉就没事了 我也不知道是神马意思 但是表单验证错误了之后就所有的action全部报错!蛋疼啊
xuejia11 2011-08-26
  • 打赏
  • 举报
回复
简单情况都是
result= success
result= error
result= input
xuejia11 2011-08-26
  • 打赏
  • 举报
回复
No result defined for action com.onionportal.blackadmin.action.NewsSectionAction and result input


你要给action的result配置一个input属性
chaohua20 2011-08-26
  • 打赏
  • 举报
回复
是配置哪里出问题了呢?
安心逍遥 2011-08-26
  • 打赏
  • 举报
回复
应该是配置问题,lz检查一下。呵呵,祝你好运

67,511

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧