Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Struts2+;Rest插件:在action类中设置属性时的奇怪行为_Rest_Struts2 - Fatal编程技术网

Struts2+;Rest插件:在action类中设置属性时的奇怪行为

Struts2+;Rest插件:在action类中设置属性时的奇怪行为,rest,struts2,Rest,Struts2,我在使用rest插件时遇到了struts2的一个奇怪行为。奇怪的是,在我已经完成的Web应用程序中,一切都很正常 我有一个带有post表单的弹出式jsp。此表单操作url正确调用控制器的create方法 <form name="gestioneUtenteForm" action="../credenziali" method="post"> <input type="hidden" name="idModifica" id="idUtente" valu

我在使用rest插件时遇到了struts2的一个奇怪行为。奇怪的是,在我已经完成的Web应用程序中,一切都很正常

我有一个带有post表单的弹出式jsp。此表单操作url正确调用控制器的create方法

<form name="gestioneUtenteForm" action="../credenziali" method="post">
           <input type="hidden" name="idModifica" id="idUtente" value="<%=request.getParameter("idModifica") %>" />
            <div>
                <label>Nome Completo</label>
                <input type="text" name="nomeUtente" id="nomeUtente" />
            </div>
            <div>
                <label>Login</label>
                <input type="text" name="loginUtente" id="loginUtente" />
            </div>
            <div>
                <label>Password</label>
                <input type="password" name="password" id="password" />
            </div>
            <div>
                <label>Conferma Password</label>
                <input type="password" name="confermaPassword" id="confermaPassword" />
            </div>
            <!-- ... OTHER FIELDS ... -->

        <div><input type="submit" name="submit" value="Registra" /></div>
    </form>
我知道loginUtente和其他属性一样,具有正确的值。但是nomeutete和password为空。如果我打电话:

public HttpHeaders create() {

    HttpServletRequest request = getServletRequest();
    nomeUtente = request.getParameter("nomeUtente");
    loginUtente = request.getParameter("loginUtente");
    password = request.getParameter("password");
    mailUtente = request.getParameter("mailUtente");
    telUtente = request.getParameter("telUtente");
    scadenzaReg = request.getParameter("scadenzaReg");
    scadenzaPwd = request.getParameter("scadenzaPwd");
    ruoloUtente = request.getParameter("ruoloUtente");

    logger.info("Creazione utente");
    GestioneUtenteService.creaUtente(nomeUtente, loginUtente, password,
            mailUtente, telUtente, scadenzaReg, scadenzaPwd, ruoloUtente);

    if (Integer.valueOf(ruoloUtente) == Constants.NUM_RUOLO_ADMIN_GENERALE)
        return new DefaultHttpHeaders("accesso").disableCaching();

    return index();
}
正如我之前所说,我得到了所有的值…包括nomeutete和password,因为所有的东西都被发布了。 同样,对于Web应用程序,一切正常,控制器的属性都正确设置


哪里出了问题?

很难说这里出了什么问题?您的字段是否有任何类型的验证(struts2验证程序)?只需使用logger level as
INFO
来查看出了什么问题,对我来说,OGNL可能遇到了一些错误,阻止它将值设置为受尊重的字段。我没有使用任何类型的验证器,或者至少我没有设置任何一个。你是对的,OGNL有问题,因为当我调用一个put方法(传递_method=put作为表单参数)时,logger说我对OGNL有问题,你是发布JSON还是其他内容类型?尝试发布ASCII字符以验证它不是编码错误。我解决了我的问题。我实现的“public Object getModel()”方法(需要实现与rest插件相关的接口)返回一个模型对象列表(称为Products),但如果该列表为null,则返回一个新的产品实例。我在返回产品列表时更改了它,如果为空,则返回新的产品列表
public HttpHeaders create() {

    HttpServletRequest request = getServletRequest();
    nomeUtente = request.getParameter("nomeUtente");
    loginUtente = request.getParameter("loginUtente");
    password = request.getParameter("password");
    mailUtente = request.getParameter("mailUtente");
    telUtente = request.getParameter("telUtente");
    scadenzaReg = request.getParameter("scadenzaReg");
    scadenzaPwd = request.getParameter("scadenzaPwd");
    ruoloUtente = request.getParameter("ruoloUtente");

    logger.info("Creazione utente");
    GestioneUtenteService.creaUtente(nomeUtente, loginUtente, password,
            mailUtente, telUtente, scadenzaReg, scadenzaPwd, ruoloUtente);

    if (Integer.valueOf(ruoloUtente) == Constants.NUM_RUOLO_ADMIN_GENERALE)
        return new DefaultHttpHeaders("accesso").disableCaching();

    return index();
}