Успешные вызовы геттера. Но клиентская сторона всегда получает нулевые значения.Struts JSON плагин всегда устанавливает нулевое значение
struts2 версия 2.3.15
Struts2 JSON плагин версии 2.3.15
Действие Класс
public class UpdateInfo implements Action{
private String uname;
private String uemail;
private String uphone;
private JSONObject status;
@Override
public String execute() throws Exception {
DbConnector connector = new DbConnector();
HttpServletRequest request = ServletActionContext.getRequest();
JsonFormatter jf = new JsonFormatter();
HashMap<String,String> updates = jf.createUpdateRecords(request);
this.setStatus(connector.updateUserInfo(updates));
return SUCCESS;
}
public void setUname(String name){
this.uname = name;
}
public void setUemail(String email){
this.uemail = email;
}
public void setUphone(String phone){
this.uphone = phone;
}
public void setStatus(JSONObject jb){
this.status = jb;
}
public String getUname(){
return this.uname;
}
public String getUemail(){
return this.uemail;
}
public String getUphone(){
return this.uphone;
}
public JSONObject getStatus(){
return this.status;
}
}
Здесь updateUserInfo() возвращает объект JSON
struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- Configuration for the default package. -->
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts-default,json-default">
<result-types>
<result-type name="tiles"
class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
......................
<action name="updateinfo" class="com.portal.controls.UpdateInfo" method="execute">
<result name="success" type="json"></result>
</action>
</package>
</struts>
Форма представить
<form method="post" id="uform">
<input type="text" id="uname" name="name" placeholder="Name"><br>
<input type="text" id="uemail" name="email" placeholder="Email"><br>
<input type="text" id="uphone" name="phone" placeholder="Phone"><br>
<input type="submit" id="ibutton" value="Update">
</form>
стороне клиента Вызов
$.post("updateinfo",$('#uform').serialize(),function(data){
if(data.status === "1"){
alert("updated");
}
else{
alert("Update failed");
}
},"json");
});
Ответ, полученный
{"status":{},"uemail":null,"uname":null,"uphone":null}
Полученные значения всегда равны нулю. Я проверил, вызываются ли методы getter перед ответом JSON, и он работает. Члены класса сохраняют правильные значения при вызове методов getter. Только после получения ответа они равны нулю. Любая идея, что не так с кодом?
Определен ли вами класс DbConnector? –
@BrijeshBhatt Да. –
plz Опубликовать код для этого метода updateUserInfo –