2017-02-20 10 views
-1

私はajaxで新しく、アクションクラスからjspにデータを取得したいと考えています。struts2でajaxを使ってアクションクラスからjspにデータを取得する方法は?

ファイル:getRole.jsp

<head> 
<script type="text/javascript"> 
var request; 
function loaddata() 
{ 
    var id = document.getElementById("newRole").value; 
    alert("hi : "+ id); 
    var xhttp; 
     xhttp = new XMLHttpRequest(); 
     xhttp.onreadystatechange = function() { 
     if (this.readyState == 4 && this.status == 200) { 
      document.getElementById("display_info").innerHTML = this.responseText; 
      } 
     }; 
     xhttp.open("GET", "loadData?id="+id, true); 
     xhttp.send(); 
} 

</script> 
</head> 
<body> 
<div class="container-fluid"> 
    <div class="col-sm-2"></div> 
    <div class="col-sm-8"> 
     <label for="focusedInput" id="abc"><h4>Enter Id : </h4></label> 
     <input type="text" class="form-control" name="newRole" id="newRole" onkeyup="loaddata();"> 
     <div id="display_info" ></div> 
    </div> 
    <div class="col-sm-2"></div> 
</div> 
</body> 

はファイル:loadData.java

public class loadData extends ActionSupport implements ServletRequestAware, ServletResponseAware{ 

private static final long serialVersionUID = 1L; 
String url = "jdbc:mysql://localhost:3306/struts"; 
String user = "username"; 
String pass = "password"; 
HttpServletRequest request; 
HttpServletResponse response; 

@Override 
public void setServletRequest(HttpServletRequest request) { 
    // TODO Auto-generated method stub 
    this.request = request; 
} 

public HttpServletRequest getServletRequest() { 
    return request; 
} 

@Override 
public void setServletResponse(HttpServletResponse response) { 
    // TODO Auto-generated method stub 
    this.response = response; 
} 

public HttpServletResponse getServletResponse() 
{ 
    return response; 
} 

public String execute() 
{ 
    try{ 
     String id = request.getParameter("id"); 
     String name = "null."; 
     System.out.println("in servlet : " + id); 

     Class.forName("com.mysql.jdbc.Driver"); 
     java.sql.Connection con =DriverManager.getConnection(url, user, pass); 

     String s = "select * from tempemp where id="+id; 
     Statement st = con.createStatement(); 
     ResultSet rs = st.executeQuery(s); 

     while(rs.next()) 
     { 
      name = rs.getString("role"); 
      System.out.println(name); 
     } 
     PrintWriter out = response.getWriter(); 
     out.println("Name: "+name); 
     con.close(); 
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 
    return SUCCESS; 
} 
} 

私は、ユーザーからIDを取得し、そのIDに基づいて役割を印刷したいです。 私はjsonではなくajaxを使いたいだけです。だから私にはAJAXコードだけで答えてください。

答えて

1

成功の代わりにnullを返す必要があります。 nullを返すことは、クライアントに現在の応答を送信するだけの処理を行いません。

SUCCESSを返すと、struts.xmlファイルでその結果に対して定義された特定のjspページが検索されます。

this.responseTextnameが届きます。 詳細については、https://struts.apache.org/docs/ajax.html

+0

このコードを試してみてください。 response.setContentType( "text/plain"); response.setCharacterEncoding( "UTF-8"); response.getWriter()。write(name); –

+0

@ParthPatelそれは正確に動作します。 – udaybhaskar

+0

Thanx @udaybhaskar。 "success"を "null"に変更しても機能します。 結果の型に「null」が含まれている理由を説明できますか? –