struts2 validation 服务器端验证,提示一些项必输,在填写后在提交到struts 的action不起作用?

挑大梁 2008-01-16 02:22:12
再有,测试时多次提交,提示 ××必须填写 。这些提示信息总是累加显示。

如:

一次提交:
username is required!
password is required!

二次提交:
username is required!
username is required!
password is required!
password is required!

有一遍就够了。

请高手解答,不胜感激。

...全文
1598 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
houenxu123 2009-08-10
  • 打赏
  • 举报
回复
遇到了同样的问题,谢谢
莳心 2008-03-01
  • 打赏
  • 举报
回复
把action 设置scope="prototype"在struts.xml里
johnny_briup 2008-02-15
  • 打赏
  • 举报
回复
那位有关于struts2.0的服务验证源码了 谢谢了
挑大梁 2008-01-19
  • 打赏
  • 举报
回复
<bean id="userAction" class="cn.com.ctdos.web.action.UserAction" scope="prototype">


要加上他scope="prototype" ,我记得默认不是单实例啊

谢了,爱
挑大梁 2008-01-18
  • 打赏
  • 举报
回复
终于找到原因了,是因为这个
<constant name="struts.objectFactory" value="spring" />

<action name="UserAction_userAdd" method="add" class="userAction">

换成这个<action name="UserAction_userAdd" method="add" class="cn.com.ctdos.web.action.UserAction">

就没问题了,原因正在查找中,为什么.憋了我好长时间

zb_86 2008-01-18
  • 打赏
  • 举报
回复
当然和cookie没有关系了,应该是每次提交后,返回结果,但是没有进行一次http操作,也就是说没有刷新页面或者就是页面的事了,这种问题和后台没有关系,根本就不走Action
挑大梁 2008-01-18
  • 打赏
  • 举报
回复
是不是跟cookie什么的有原因
zb_86 2008-01-18
  • 打赏
  • 举报
回复
你检验用户输入是不是用validator插件,如果是,就检查一下页面和validate.xml
和后台没有关系
挑大梁 2008-01-18
  • 打赏
  • 举报
回复
第一次提交是可以的,能调用acton,并提示一些项必输,但以后就不行了,我觉得跟我的UI没什么关系,
很可能是jar冲突,但人仔细查检了。
哎,期待!!!

com.opensymphony.xwork2.validator.ActionValidatorManagerFactory - <Detected AnnotationActionValidatorManager, initializing it...>

其中有这么一句话。咋回事呢?
挑大梁 2008-01-17
  • 打赏
  • 举报
回复
validation中的内容没有清,怎么清啊?我不知怎么追啊
fengyifei11228 2008-01-17
  • 打赏
  • 举报
回复
好像是第一次的validation中的内容没有清,然后第二次调用时又输出了
要不你追一下,看看在哪产生的问题
挑大梁 2008-01-17
  • 打赏
  • 举报
回复
有人遇到过类似的问题吗?

我单独建了一个工程,是没有问题的,是不是validation同什么冲突
挑大梁 2008-01-16
  • 打赏
  • 举报
回复
楼上的,先谢谢。

看好题目在解答
luoxinabc12345 2008-01-16
  • 打赏
  • 举报
回复
struts-config.xml里面action作用域设置成request!再看!他默认的是session!如果是session的话他就不会重新创建
ActionForm所以得不到!
hahe7788 2008-01-16
  • 打赏
  • 举报
回复
按有几个群,你不妨加进去,可以和大家一起讨论啊.........46986340,28039577,4804620
在那里看看有无能回答你的,谢谢,LZ,甭忘了给俺分哦,谢谢LZ
挑大梁 2008-01-16
  • 打赏
  • 举报
回复
问题不清楚吗?
挑大梁 2008-01-16
  • 打赏
  • 举报
回复
msn: jacobllp@hotmail.com 谢谢
挑大梁 2008-01-16
  • 打赏
  • 举报
回复


import java.util.List;
import org.apache.log4j.Logger;
import org.apache.struts2.interceptor.validation.SkipValidation;

import cn.com.ctdos.domain.User;
import cn.com.ctdos.domain.helper.UserHelper;
import cn.com.ctdos.service.ServiceFacade;
import com.opensymphony.xwork2.ActionSupport;


public class UserAction extends ActionSupport {
Logger log = Logger.getLogger(UserAction.class);
private static final String _SHORT_NAME_Of_POJO = "User";
private static final String _LONG_NAME_Of_POJO = "cn.com.ctdos.domain.User";
private static final String _FIND = "find";
ServiceFacade<User> serviceFacade = null;
List<User> liUser;
User user = null;
UserHelper userHelper;
@SkipValidation
public String index(){
find();
return SUCCESS;
}
@SkipValidation
public String indexFTL(){
find();
return "input";
}
@SkipValidation
public String findIndex(){
return _FIND;
}
//---------------------------------
//就是要调用它,别的我什么也没做。
public String add(){
log.info("add start");
serviceFacade.saveUser(user);
log.info("add end");
return find();
}
//---------------------------------
@SkipValidation
public String find(){
setLiUser(serviceFacade.findUser(_SHORT_NAME_Of_POJO));
return SUCCESS;
}
@SkipValidation
public String findUserByID(){
log.info("-------------> " + user.getId());
setUser(serviceFacade.findUserById(_LONG_NAME_Of_POJO, user.getId()));

return SUCCESS;
}
@SkipValidation
public String delete(){
// log.info(getId());
serviceFacade.delUser(user);
return find();
}
@SkipValidation
public String update(){
User userupdate = serviceFacade.findUserById(_LONG_NAME_Of_POJO, user.getId());
userupdate.setId(user.getId());
userupdate.setUsername(user.getUsername());
userupdate.setPassword(user.getPassword());
serviceFacade.updateUser(userupdate);
return find();
}
@SkipValidation
public String findByProperty(){
String queryCondition = userHelper.getQueryCondition();
String queryString = "from " + _SHORT_NAME_Of_POJO
+ " where username like '%"+queryCondition+"%'";
setLiUser(serviceFacade.findByProperty(queryString));
return _FIND;
}

public ServiceFacade<User> getServiceFacade() {
return serviceFacade;
}

public void setServiceFacade(ServiceFacade<User> serviceFacade) {
this.serviceFacade = serviceFacade;
}

public List<User> getLiUser() {
return liUser;
}

public void setLiUser(List<User> liUser) {
this.liUser = liUser;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public UserHelper getUserHelper() {
return userHelper;
}

public void setUserHelper(UserHelper userHelper) {
this.userHelper = userHelper;
}



}



ftl 里获得error


<@s.fielderror/>
挑大梁 2008-01-16
  • 打赏
  • 举报
回复
struts.xml文件部分:

<action name="user_*" method="{1}" class="userAction">

<result name="success" type="tiles">ssh.main.ftl</result>
<result name="find" type="tiles">ssh.find.ftl</result>
<result name="input" type="tiles">ssh.main.ftl</result>
</action>

<!--只需验证add方法,userAction映射到spring,ssh.main.ftl映射到 tiles, 页面用freemarker显示-->
<action name="user_add" method="add" class="userAction">

<result name="success" type="tiles">ssh.main.ftl</result>
<result name="input" type="tiles">ssh.main.ftl</result>
</action>

tiles。xml文件

<tiles-definitions>

<definition name="ssh.main.jsp" template="/main.jsp">
<put-attribute name="someAttribute" value="some.value" />
<put-attribute name="title" value="user infomation"/>
<put-attribute name="header" value="/header.jsp"/>
<put-attribute name="menu" value="/menu.jsp" />
<put-attribute name="footer" value="/footer.jsp" />
<put-attribute name="body" value="/body.jsp" />
</definition>

<definition name="ssh.main.ftl" template="/main.ftl">
<put-attribute name="someAttribute" value="some.value" />
<put-attribute name="title" value="user infomation"/>
<put-attribute name="header" value="/header.ftl" />
<put-attribute name="menu" value="/menu.ftl" />
<put-attribute name="footer" value="/footer.ftl" />
<put-attribute name="body" value="/body.ftl" />
</definition>

<definition name="ssh.find.ftl" template="/userSearch.ftl">
<put-attribute name="header" value="/userSearchHeader.ftl" />
<put-attribute name="body" value="/userSearchBody.ftl" />
<put-attribute name="foo" value="/footer.ftl" />
</definition>

</tiles-definitions>



UserAction-add-validation.xml文件
<!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="user.username">
<field-validator type="requiredstring" short-circuit="true">
<message>username is required!</message>
</field-validator>
</field>
<field name="user.password">
<field-validator type="requiredstring" short-circuit="true">
<message>password is required!</message>
</field-validator>
</field>

</validators>
changjiangzhibin 2008-01-16
  • 打赏
  • 举报
回复
查一下ActionServlet中的代码

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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