浏览 3274 次
锁定老帖子 主题:验证失败返回怎么让用户输入信息显示
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-10-26
我这样做每次返回页面用户输入的东西都没有了 要重新填写 不知道各位大侠是怎么做的 下面这个就是从一个编辑页面出错后返回该编辑页面 页面上有一些数据需要取 不能直接 转回jsp吧 但用户输入的东西就没有了 这样的页面转向会不会有问题 每次都要查询数据库 tochangestatus->changestatus.jsp->changestatus[input]->tochangestatus... <action name="tochangestatus" class="changeStatusAction" method="doInput"> <interceptor-ref name="params" /> <result name="input">/jsp/tms/changestatus.jsp</result> </action> <action name="changestatus" class="changeStatusAction" method="changeStatus"> <interceptor-ref name="defaultStack-auth" /> <interceptor-ref name="validation"/> <interceptor-ref name="workflow"/> <interceptor-ref name="token"/> <result name="input" type="chain">tochangestatus</result> <result name="invalid.token">/jsp/doublepost.jsp</result> <result name="success" type="redirect-action"> <param name="namespace">/truck</param> <param name="actionName">list</param> </result> </action> private Truck truck; private List truckList; private LoadInfo info = new LoadInfo(); .......... public String doInput() throws Exception { truckList = truckManager.queryForList("queryTruckListByOwnerId", ownerId); if (StringUtils.isNotEmpty(truckId)) truck = truckManager.getTruckById(truckId); return INPUT; } public String execute() throws Exception { LoadInfo info = (LoadInfo)getModel(); if ( info != null ) { loadManager.createLoadInfo(info); } return SUCCESS; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-10-26
input返回chain,这种做法很怪异。这样它继续转到下一个action执行,但是在下一个action不是返回success而是继续返回input。输入的信息丢失肯定是你action代码组织的问题,不是webwork的问题。比如你录入一个账号,要先对这个账号进行校验,校验不通过,但是你又继续执行了某个action把你页面将要显示的那个账号对象赋值为空了,这样就会丢失信息。
|
|
返回顶楼 | |
发表时间:2006-10-26
刚开始用webwork 很多东西不知道 是不是转到当前jsp就可以了 不用再去查询了
但我转过去我的一些对象就没有了 页面就不能获得数据 重新转到action查询不用chain返回页面就 没有错误信息fieldErrors为空的 |
|
返回顶楼 | |
发表时间:2006-10-26
谁能告诉我怎样在验证出错再查询后再显示错误信息 不用chain吗
|
|
返回顶楼 | |
发表时间:2006-10-27
这个功能在 struts 里面有一个专门的解决方法:
public ActionForward execute(ActionMapping mapping, ActionForm baseForm, HttpServletRequest request, HttpServletResponse response) throws Exception { return (mapping.getInputForward()); } 在 webwork 里面如果也要实现类似的功能,用类似如下的方法 在 xwork.xml 里面配置: <package name="register" extends="default"> <action name="register" class="..."> <result name="REGISTER" type="dispatcher"> <param name="location">/register/register.jsp</param> </result> <result name="SUCCESS" type="dispatcher"> <param name="location">/register/success.jsp</param> </result> <interceptor-ref name="simpleStack"/> </action> </package> 在 action 里面实现: public class RegisterAction extends ActionSupport { private User _user; private UserService _userService; public User getUser() { return _user; } public String execute() throws Exception { ...... if( _userService.add( _user ) ) { return "SUCCESS"; } else { return "REGISTER"; } } } 在页面上写 <form name="registerForm" action="register.action" method="POST" > <INPUT id="username" name="user.username" value="<ww:property value='user.username'/>"> <INPUT id="nickname" name="user.nickname" value="<ww:property value='user.nickname'/>"> ...... </form> 由于在失败之后, execute return "REGISTER" ,此时 action context 和 用户提交时是一样的,所以页面还可以从 action context 里面获得用户之前输入的值。 |
|
返回顶楼 | |
发表时间:2006-10-27
谢谢你们的答复
我的edit页面有其他信息 我直接转会jsp页面那些信息就没有了: 下面这个就是 我直接转回去select中就只有一个 是不是我的配置不对 EditAction: private User user=new User(); private String passwords; private List list; 。。。。。 public Object getModel() { return user; } public String input(){ //get data from database list=new ArrayList(); list.add("12"); list.add("34"); list.add("56"); user.setName("zsan"); user.setPassword("222"); user.setEmail("1@1.com"); passwords="test"; return SUCCESS; } public String save(){ //manager.save(user); return SUCCESS; } xwork.xml <package name="web" extends="webwork-default" namespace="/myweb"> <action name="edit" class="editAction" method="input"> <result name="success">/edit.jsp</result> <result name="input">/index.jsp</result> </action> <action name="save" class="editAction" method="save"> <interceptor-ref name="model-driven"/> <interceptor-ref name="params"/> <interceptor-ref name="validation"/> <interceptor-ref name="workflow"/> <result name="success">/edit-result.jsp</result> <result name="input">/edit.jsp</result> </action> </package> context.xml <beans default-autowire="autodetect"> <bean name="editAction" class="example.EditAction" singleton="false"/> </beans> edit.jsp <ww:form namespace="/myweb" action="save" method="post"> <ww:textfield label="Username" name="name" required="true"/><ww:fielderror><ww:param value="%{'name'}"/></ww:fielderror><br> <ww:textfield label="Password" name="passwords" required="true"/><ww:fielderror><ww:param value="%{'passwords'}"/></ww:fielderror><br> <ww:textfield label="Email" name="email"/><ww:fielderror><ww:param value="%{'email'}"/></ww:fielderror><br> <ww:textfield label="Age" name="age"/><ww:fielderror><ww:param value="%{'age'}"/></ww:fielderror><br> <ww:textfield label="IP Reg" name="reg"/><ww:fielderror><ww:param value="%{'reg'}"/></ww:fielderror><br> <select name="list"> <ww:iterator value="list" status="li"> <option name='<ww:property value="#li.count"/>'><ww:property/></option> </ww:iterator> </select> <ww:submit value="Submit"/><br> </ww:form> |
|
返回顶楼 | |
发表时间:2006-10-27
有谁能解答一下吗 急啊
|
|
返回顶楼 | |