Struts1.3令牌

deng_1987 2009-10-08 08:17:00
我如果在一个Action中,设置两种方法add(),insert()方法
在add方法中我设置了一个令牌,跳转到一个注册页面,提交到insert方法中,在这个注册页面中我有一个ValidatorForm,
我每次从add方法中跳到注册页面中,这个注册页面也要显示错误信息。(我的原意是不显示。他可能在运行add方法中也把
validatorForm经过校验,只不过里面的值都为null)。
有什么方法可以解决。(前提是我非要在一个Action中的两个方法,不能放在不同的Action中)。就是把add的ActionForm给禁用。而insert方法中的ActionForm可以用
...全文
173 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjay124 2009-10-16
  • 打赏
  • 举报
回复
解决了吗,楼主别忘了结贴啊
deng_1987 2009-10-16
  • 打赏
  • 举报
回复
哦。。谢谢了。。。我用的是DispathAction所以才出现那种错误。。
Struts学的还不是蛮好。。。谢谢了
cjay124 2009-10-15
  • 打赏
  • 举报
回复
public class loginAction extends MappingDispatchAction{
你继承了MappingDispatchAction了吗?
deng_1987 2009-10-15
  • 打赏
  • 举报
回复
add方法中没有表单提交
deng_1987 2009-10-15
  • 打赏
  • 举报
回复
我修改了Struts.cfg.xml
<action path="/register/add"
type="org.springframework.web.struts.DelegatingActionProxy"
parameter="add"
>
<forward name="login" path="/register.jsp"></forward>
</action>
<action path="/register/insert"
type="org.springframework.web.struts.DelegatingActionProxy"
parameter="insert"
scope="request"
name="register"
validate="true"
input="register.jsp">

<forward name="success" path="/success.jsp"></forward>
<forward name="false" path="/false.jsp"></forward>
</action>

怎么出现: Request[/register/add] does not contain handler parameter named 'add'. This may be caused by whitespace in the label text.

cjay124 2009-10-14
  • 打赏
  • 举报
回复
是struts1啊url就是path啊,就是配置两个path用同一个action
你用DispatchAction只配了一个action通过?method=search来确定调用哪个方法
我上面的配置action继承的是EventDispatchAction直接拆成两个
parameter="default=search"中search就是确定要调用的方法
你也可以继承的是MappingDispatchAction那么配置里只要写parameter="search"就可以确定调用哪个方法了
deng_1987 2009-10-14
  • 打赏
  • 举报
回复
直到怎么在URL上输入了
但是又遇见了一个问题
javax.servlet.ServletException: Request[/register/add] does not contain handler parameter named 'method=add'. This may be caused by whitespace in the label text.
org.apache.struts.actions.DispatchAction.unspecified(DispatchAction.java:197)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:245)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)

怎么解决呀
deng_1987 2009-10-14
  • 打赏
  • 举报
回复
在不在呀?者是Struts1呢

我在URL上应该怎么输入exercise.do?method=search还是什么?
cjay124 2009-10-13
  • 打赏
  • 举报
回复
这个在配置文件里可以设置的,两个方法应该会有两个path
把里面的validate分别设置不行吗?

<action path="/exercise/search"
type="com.chinasunzone.teach.exercise.ExerciseAction" name="searchExercise"
scope="request" validate="true" input="/pages/exercise.jsp"
parameter="default=search">
</action>

<action path="/exercise/read"
type="com.chinasunzone.teach.exercise.ExerciseAction" name="updateExercise"
scope="request" validate="false" input="/pages/exercise-update.jsp"
parameter="default=read">
</action>
deng_1987 2009-10-13
  • 打赏
  • 举报
回复
人呢?
deng_1987 2009-10-09
  • 打赏
  • 举报
回复
package com.luntan.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.luntan.Entity.Client;
import com.luntan.actionForm.loginActionForm;
import com.luntan.manage.showAll;

public class loginAction extends DispatchAction {
private showAll show;

private Client client;

public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

saveToken(request);
return mapping.findForward("login");

}

public ActionForward insert(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
if(isTokenValid(request)){
/*如果为true表示没有重复提交*/
loginActionForm login = (loginActionForm)form;
client.setName(login.getUsername());
client.setCode(login.getPsw());
client.setSex(login.getSex());
client.setEmail(login.getEmail());
show.saveObject(client);
resetToken(request);//从当前session中删除令牌
return mapping.findForward("success");
}
else{
return mapping.findForward("false");
}

}




public void setShow(showAll show) {
this.show = show;
}

public void setClient(Client client) {
this.client = client;
}
add方法跳入一个注册界面,这个注册界面(register.jsp)肯定含有一个ActionForm,提交到insert方法中。我如果对这个表单用validator框架进行校验,input="/loginAction.do?method=add",如果是这样就是一个无限循环了。
如果input="/register.jsp",当荣add方法进入注册界面,我第一次输入错误的表单(放回到register.jsp),在输入正确的,结果也不行,request和session中的令牌不相同
有什么方法可以解决不




}
生命始于运动 2009-10-08
  • 打赏
  • 举报
回复
没有代码怎么弄,请lz把源码贴上。

81,114

社区成员

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

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