首先是通過一個ForwardAction
public class ForwardAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private BookTypeDao bookTypeDao;// 依赖Spring注入
private BookPressDao bookPressDao;// 依赖Spring注入
private List<BookType> types;
private List<BookPress> press;
// 跳转到添加图书页面
public String execute() throws Exception {
types = bookTypeDao.listBookType();
press = bookPressDao.listBookPress();
return SUCCESS;
}
//get set 省略
}
跳转到页面addBook.jsp
<s:form action="addBook">
<s:textfield required="true" maxlength="50" label="书名" name="name" />
<s:textfield required="true" maxlength="20" label="作者" name="author" />
<s:textfield required="true" label="页数(10~10000)" name="pages" />
<s:textarea label="备注" name="re" />
<s:select list="types" label="分类" name="type_id" listKey="id" listValue="name" />
<s:select list="press" label="出版社" name="press_id" listKey="id" listValue="name" />
<s:submit value="添加"></s:submit>
</s:form>
校验失败后,又跳转回addBook.jsp但是<result name="input">/WEB-INF/jsp/addBook.jsp</result>是会发生异常的,因为没有对types和press赋值会出现异常。但是如果用<result name="input" type="redirect">ForwardAction</result>可以正常到达addBook.jsp,可是不会显示校验出错的提示信息。有什么方法可以解决?
public class ForwardAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private BookTypeDao bookTypeDao;// 依赖Spring注入
private BookPressDao bookPressDao;// 依赖Spring注入
private List<BookType> types;
private List<BookPress> press;
// 跳转到添加图书页面
public String execute() throws Exception {
types = bookTypeDao.listBookType();
press = bookPressDao.listBookPress();
return SUCCESS;
}
//get set 省略
}
跳转到页面addBook.jsp
<s:form action="addBook">
<s:textfield required="true" maxlength="50" label="书名" name="name" />
<s:textfield required="true" maxlength="20" label="作者" name="author" />
<s:textfield required="true" label="页数(10~10000)" name="pages" />
<s:textarea label="备注" name="re" />
<s:select list="types" label="分类" name="type_id" listKey="id" listValue="name" />
<s:select list="press" label="出版社" name="press_id" listKey="id" listValue="name" />
<s:submit value="添加"></s:submit>
</s:form>
校验失败后,又跳转回addBook.jsp但是<result name="input">/WEB-INF/jsp/addBook.jsp</result>是会发生异常的,因为没有对types和press赋值会出现异常。但是如果用<result name="input" type="redirect">ForwardAction</result>可以正常到达addBook.jsp,可是不会显示校验出错的提示信息。有什么方法可以解决?
解决方案 »
- java获取访问路径问题。
- Comet实践中的java.lang.ClassNotFoundException: CometProcessor问题
- 栏目级别不确定的问题
- 身体 更重要
- Hibernate小错误,各位帮帮忙哈,谢谢了!
- 帮忙看看这3个命令的详细意思是啥?谢谢
- spring mvc mysql 将EXCEL表格导入到MYSQL数据库里保存
- 如何开发电子商务网站啊?十万火急!
- 先学java语言 ,还是先学jsp?我是初学手请各位帮忙
- 请教:SQL中的 '
- hibernate中一对多的关系,从一端join fetch 多端的Set<E> 获取的List<E>长度为0,怎么办?
- oracle 分页SQL语句改为HQL 语句
<field name="user.userName">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="HUMSG001"></message>
</field-validator>
</field>
<result name="input">/WEB_INF/jsp/addBook.jsp</result>这样是会报异常的,因为addBook.jsp页面里有
<s:select list="types" label="分类" name="type_id" listKey="id" listValue="name" />
这样的标签。必须通过ForwardAction来跳转到addBook.jsp页面才能为types赋值,才不会发生异常!但是如果是用redirect方式 会失去校验失败的信息。
@Override
public void validate(){
写上你的方法注入值即可。
}
private List <BookType> types;
//types是用的List存的,为它赋值是通过ForwardAction执行的execute()方法
public String execute() throws Exception {
types = bookTypeDao.listBookType(); //调用做好的方法,从数据库或得所有图书类型
return SUCCESS;
}
你的意思在校验失败后input视图那里 到底该怎么做?
<result name="input"></result>这里
<result name="input" type="chain">ForwardAction</result>
并且需要
<action name="ForwardAction" class="forwardActionBean">
<result name="input">/WEB-INF/jsp/addBook.jsp</result>
<result name="success">/WEB-INF/jsp/addBook.jsp</result>
</action>
必须要加上<result name="input">/WEB-INF/jsp/addBook.jsp</result>
结果才行。我试过能行。