【问题标题】:Spring MVC : How managing to get a java object from a GET request?Spring MVC:如何从 GET 请求中获取 java 对象?
【发布时间】:2017-03-22 09:18:52
【问题描述】:

我正在尝试使用 SpringMVC 处理表单,但现在卡住了,我在这里寻求您的帮助。

当用户提交表单时,我的控制器返回 jsp 结果页面,用户可以检查他填写的内容。在该结果页面中,我有 2 个按钮,一个用于确定发送表单,一个用于修改它。

这是我的问题:当我点击修改表单的所有字段时再次为空,我想保留用户填写的值。

我的控制器:

@Controller
@RequestMapping( "/adhesion" )
public class FormController {

//Send the form
    @RequestMapping( method = RequestMethod.GET )
    public String getFormulaire( @RequestParam( value = "user", required = false ) T_demande_adhesion User, Map<String, Object> model ) {
        System.out.println( "user" + User ); //Null everytime
        model.put( "user", User );
        System.out.println( "Envoi formulaire !" );
        return "formulaireAdhesion";
    }

//Handle the form
    @RequestMapping( method = RequestMethod.POST )
    public String gestionAdhesion( @ModelAttribute( "formAdhesion" ) @Valid T_demande_adhesion user, BindingResult erreurForm, Map<String, Object> model )
            throws ServletException, IOException {


        final String CHEMIN_DOC_APP = "C:/DocumentsApp/";
        // Form JSP page
        final String FORMULAIRE_ADHESION = "formulaireAdhesion";
        // Result page
        final String AFFICHER_RESULT = "afficherResult";

        // Objet de validation du formulaire    
        ValidationDmdAdhesion demandeAdhesion = new ValidationDmdAdhesion();

//Return AFFICHER_RESULT or FORMULAIRE_ADHESION
        String resultat = demandeAdhesion.validationUser( user, erreurForm, model, FORMULAIRE_ADHESION, AFFICHER_RESULT, CHEMIN_DOC_APP  );

        //putting the object to the request
        model.put( "user", user );

        return resultat;

    }
}

在 JSP 端,我在请求中添加了参数“用户”: '

<input type="button" value="Modifier" onclick="document.location.href='<c:url value="adhesion?user=${user}"/>';" class="boutonAdhesion" />

' 但这给我发了一个字符串,网址是:

/adhesion?user=com.user.entities.T_demande_adhesion@1dfe8158

当用户点击修改按钮(在结果页面中)时,我想在GET请求中获取这个对象@ModelAttribute( "formAdhesion" ) @Valid T_demande_adhesion user来填写表格,以避免用户再次输入相同的内容信息。 有什么帮助吗?

表格摘录:

<label for="nom">Nom <span class="requis">*</span></label><input type="text" id="nom" name="identite.nom" value="<c:out value ="${user.identite.nom}"/>" size="35" maxlength="30" /> <spring-ext:errors path="identite.nom" class="erreur" firstErrorOnly="true"/> 在这里:value="&lt;c:out value ="${user.identite.nom}"/&gt; 我想获得nom 的值。

对不起英语。

法式。

【问题讨论】:

  • 我认为您的input 标签的onclick 属性过早终止。我认为它到此结束:onclick="document.location.href='&lt;c:url value=" 您应该使用\" 转义嵌套引号。
  • 我认为onclick需要像这样转义:onclick="document.location.href='&lt;c:url value=\"adhesion?user=${user}\"/&gt;';"
  • 如果我把“\”放在value=之后就不行了

标签: java forms spring-mvc http-request-parameters getmethod


【解决方案1】:

当我点击修改表单的所有字段再次为空并且 我想保留用户填写的值

由于表单数据已经在客户端的页面上可用,没有意义再次将表单提交到服务器并显示相同的数据,这是从客户端到服务器的不必要的往返,即,

要保留表单上的数据,请勿将表单提交给服务器/控制器本身。

如何查看未填写的信息是否有效 提交表格?如何在结果页面中显示它们?

无需验证用户无论如何要修改的数据。因此,只有在用户完成修改并单击“提交”后,才会对表单进行验证。验证成功/失败后,您可以在结果页面上显示结果。

【讨论】:

  • 这是一个很好的建议,但是如何在不提交表单的情况下检查所填写信息的有效性?如何在我的结果页面中显示它们?
  • 你可以看看上面的答案。
  • 这是个好主意,但如果验证发送错误,问题将是相同的,我需要将用户重定向到表单。
【解决方案2】:

在这种情况下,除了使用@SessionAttributes,我没有找到其他方法。在我的应用程序的这一点上,我没有使用会话,但似乎没有其他方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 2015-05-05
    • 2015-05-18
    • 2016-04-06
    相关资源
    最近更新 更多