首页 > 解决方案 > 发送表单不是通过action类而是通过stuts2的结果输入

问题描述

我在我的应用程序中使用 struts2。

在我的 JSP 上,我有一个将数据发送到 'action = "updateBl"' 属性的表单:

  <form action="updateBl" method="post" id="form_bl">
    <div class="alert alert-danger" role="alert" id="error_message">Veuillez saisir des nombres !</div>
        <input type="text" class="hidden" id="idCommande_poste_ligne" name="commande.idCommande" value="1">
        <input type="text" class="hidden" id="idPostBl" name="idPost" value="">
        <input type="text" class="hidden" id="idBl" name="idBl" value="">
    <div class="col-md-4">
      <div class="form-group">
        <label for="num_bl">Numero de BL</label>
        <input type="text" class="form-control" id="num_bl" name="bonLivraison.numeroBonLivraison">
      </div>
    </div>
    <div class="col-md-4">
      <div class="form-group">
        <label for="montant_bl">Montant du BL</label>
        <input type="text" class="form-control" id="montant_bl" name="bonLivraison.montant">
      </div>
    </div>
    <div class="col-md-4">
      <div class="form-group">
        <label for="date_livraison_bl">Date de livraison</label>
        <input type="text" class="form-control" id="date_livraison_bl" name="bonLivraison.dateBonLivraison">
      </div>
    </div>
    <div class="clear"></div>
      <button id="btn_update_bl" type="submit" class="btn btn-success btn_bl">Valider</button>
      <button type="button" class="btn btn-danger" data-dismiss="modal">Annuler</button>
  </form>

此信息用于更新数据库中的数据,但此表单也用于在数据库中插入数据(使用其他 struts 代码)。它适用于插入但不适用于更新。这个表单是一样的,但是一些参数是用 jQuery 改变的(表单动作,按钮 id,一些元素的 id,...)。

这是插入表单的代码:

<form action="addBl" method="post" id="form_bl">
          <div class="alert alert-danger" role="alert" id="error_message">Veuillez saisir des nombres !</div>
              <input type="text" class="hidden" id="idCommande_poste_ligne" name="commande.idCommande" value="1">
              <input type="text" class="hidden" id="idPostBl" name="idPost" value="">
              <input type="text" class="hidden" id="idBl" name="idBl" value="">

          <div class="col-md-4">
            <div class="form-group">
              <label for="num_bl">Numero de BL</label>
              <input type="text" class="form-control" id="num_bl" name="bonLivraison.numeroBonLivraison">
            </div>
          </div>

          <div class="col-md-4">
            <div class="form-group">
              <label for="montant_bl">Montant du BL</label>
              <input type="text" class="form-control" id="montant_bl" name="bonLivraison.montant">
            </div>
          </div>

          <div class="col-md-4">
            <div class="form-group">
              <label for="date_livraison_bl">Date de livraison</label>
              <input type="text" class="form-control" id="date_livraison_bl" name="bonLivraison.dateBonLivraison">
            </div>
          </div>

          <div class="clear"></div>
            <button id="btn_update_bl" type="submit" class="btn btn-success btn_bl">Valider</button>
            <button type="button" class="btn btn-danger" data-dismiss="modal">Annuler</button>

        </form>

这是我的 strusts.xml 文件中的相关部分:

        <action name = "updateBl" class = "sii.dsi.action.DetailsCommandeAction" method = "UpdateBl">
        <result name="success" type="redirectAction">
            <param name="actionName">details</param>
            <param name="commande.idCommande">${commande.idCommande}</param>
        </result>
        <result name="input" type="redirectAction" >accueil</result>
    </action>

提交表单时,它永远不会进入我的操作类的方法:“UpdateBl”。我总是被“结果名称=”输入“”重定向到我的“家”捐赠页面。

我找不到问题。

我需要帮助。

先感谢您。

PS:抱歉英语不好,我是法国人,我正在使用https://translate.google.fr

标签: formsinputstruts2

解决方案


您的代码或拦截器(可能是转换拦截器)中的某些内容正在向您的操作添加验证错误(actionErrors 或 fieldErrors 不为空),这会触发框架重定向回“输入”结果。

我建议在您的操作中覆盖 validate() 方法并设置断点。查看 actionErrors 和 fieldErrors 集合以了解它们包含的内容。这应该为导致验证错误的原因提供线索。


推荐阅读