2016-08-12 10 views
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> 

答えて

0

あなたはこのようなあなたのstruts.xml結果を定義することができます。

<!-- Result fragment --> 
    <result type="json"> 
    <param name="includeProperties"> 
     ^person.name 
    </param> 
    </result> 

この方法は、のみプロパティp erson.nameがjsonオブジェクトに返されます。 javascriptでは、data.person.nameにアクセスできます。

関連する問題