0
たとえば、strutsアクションクラスの文字列をテキストボックスに入力しました。String name = "Apple"このappleは、juery ajaxとjsonを使用してテキストボックスに入力しました。 。 は、今私はビットが1つの、エンティティ、このようなクラスと以前私はstruts.xmlで持っている
がstrutsアクションクラスのテキストボックスにユーザー定義オブジェクトを設定する方法
<param name="root">name</param>
私はstruts.xmlでなければならない今何
人
があることを想定変更しましたpublic class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Actionクラス
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.json.JSONException;
import org.json.JSONObject;
import com.opensymphony.xwork2.ActionSupport;
public class DemoAction extends ActionSupport implements ServletRequestAware {
HttpServletRequest request;
JSONObject obj = null;
Person person = null;
public String execute() {
String requestedNumber = getServletRequest().getParameter("userNumber");
System.out.println(requestedNumber);
person = new Person();
person.setName("pradeep");
obj = new JSONObject();
try {
obj.put("userName", person.getName());
String json = obj.toString();
System.out.println(json);
} catch (JSONException e) {
e.printStackTrace();
}
return SUCCESS;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public JSONObject getObj() {
return obj;
}
public void setObj(JSONObject obj) {
this.obj = obj;
}
public HttpServletRequest getServletRequest() {
return this.request;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
}
Struts.xml
<struts>
<package name="default" extends="json-default">
<action name="populateTextBox" class="com.pradeep.demo.DemoAction">
<result type="json" >
<param name="noCache">true</param>
<param name="excludeNullProperties">true</param>
<param name="root">person</param>
</result>
</action>
</package>
</struts>
のjQuery
<script>
$(document).ready(function() {
$('#userCheck').change(function (event) {
if(!$(this).is(":checked"))
return;
var userNumber = $('#userNumber').val();
if(userNumber != ""){
$.ajax({
type : 'GET',
url : 'populateTextBox',
dataType : 'json',
data : {
userNumber : $('#userNumber').val()
},
success : function(data, success) {
console.log(data.userName)
$('#userName').val(data.userName);
},
error : function(data, success) {
console.log(data.person.name)
document.getElementById("er").innerHTML = "Problem to upload a name";
er.style.color='red';
$('#er').show();
}
});
}else {
//FIXME: Handle this properly
alert("Enter User Number")
}
});
});
</script>
</head>
<body>
<s:form action="populateTextBox">
<s:textfield name="userNumber" id="userNumber"></s:textfield>
<s:checkbox id="userCheck" name="userCheck"></s:checkbox>
<s:textfield name="userName" id="userName"></s:textfield>
<td><p id="er"></td>
<s:submit/>
</s:form>
</body>