代码之家  ›  专栏  ›  技术社区  ›  jayjaypg22

struts 1.1:分派操作错误:错误400请求中没有参数

  •  -1
  • jayjaypg22  · 技术社区  · 14 年前

    为了在一个表单上有多个操作,我使用dispatchAction。 我从一个单独的动作开始,当我使用标准动作和execute方法时,这个动作会起作用。在添加几个动作之前,我开始转换这个动作。

    在第一次加载jsp时,在任何提交之前,我得到了错误:

    以下是我的配置:

    <action path="/rechercheUtilisateur" type="lan.poujoulat.osac.actions.RechercheUtilisateurAction" name="formRechercheUtilisateur" validate="true" input="/Administration/acces.jsp" scope="request" parameter="hidden">
        <forward name="réussiteRecherche" path="/Administration/acces.jsp">
        </forward>
    

    jsp管理/acces.jsp:

    <SCRIPT>
       function setHidden(value){document.formRechercheUtilisateur.hidden.value=value;}
    </SCRIPT>
    
    <html:form action="/rechercheUtilisateur"
        name="formRechercheUtilisateur"
        type="lan.poujoulat.osac.forms.FormRechercheUtilisateur">
    ...
    <td align="center" width="80"><a href="#"
        title='"Rechercher" />'> <input type=image
        value=submit src="./image/btnRech.gif" width="22" height="20"
        border="0" onclick="setHidden('recherche');"> </a></td> 
     </a>
    ...
              <html:hidden property="hidden" value="recherche"/>
    </html:form>
    

    RechercheUsiateuraction.java:

    public class RechercheUtilisateurAction extends DispatchAction
    {
    
        public ActionForward recherche(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
                throws Exception {
    

    我将隐藏属性添加到我的表单中:

    public class FormRechercheUtilisateur extends ValidatorForm
    {
    ...
        private String hidden = " ";
    ...
    
    3 回复  |  直到 14 年前
        1
  •  0
  •   user159088 user159088    14 年前

    我认为您的代码与 hidden 窗体的属性。这个 JavaScript form object 有一个 对象,该对象表示用于客户端-服务器通信的隐藏表单字段。

    function setHidden(value) {
      document.formRechercheUtilisateur.hidden.value=value;
    }
    

    将设置已使用此设置的隐藏字段的值:

    <html:hidden property="hidden" value="recherche"/>
    

    我以前从未使用过这个物体,所以我不能说。

    消息很清楚,您没有得到 DispatchAction

    首先检查问题所在(服务器端/客户端),然后解决方案可能很简单,只需更改字段的名称(名称“hidden”不能说明它代表什么),或者您可以执行以下操作:

    function setHidden(value) {
      document.formRechercheUtilisateur.hidden.value=value;
      document.formRechercheUtilisateur.hidden.name='hidden';
    }
    

        2
  •  0
  •   jayjaypg22    14 年前

    我将索引编程为传入操作,以便在jsp之前初始化一些数据。索引未提供隐藏参数,因此。

    解决方案:我的jsp实际上不需要初始化(空列表不会在我的显示标记中提供问题),因此索引操作前进是Administration/acces.jsp。不需要执行该操作意味着不需要初始化我的参数。

    jsp中的初始化是由

    this.form.hidden.value=值

        3
  •  0
  •   jayjaypg22    14 年前

    您无法找到真正的问题,因为真正的问题是以下代码:

    <forward name="acces" path="/rechercheUtilisateur.do">
    

    我没有提供。事实上,这要归功于

    <action path="/rechercheUtilisateur" type="lan.poujoulat.osac.actions.RechercheUtilisateurAction" name="formRechercheUtilisateur" validate="true" input="/Administration/acces.jsp" scope="request" parameter="hidden">
        <forward name="réussiteRecherche" path="/Administration/acces.jsp">
        </forward>
    

    未初始化隐藏的。

     <forward name="acces" path="/acces.jsp">
    

    实际上,在访问jsp之前,我不需要初始化(我的显示标记中的列表可以为空)