以JSP形式动态填充数据(struts)

时间:2014-06-01 06:16:41

标签: java jquery ajax jsp struts2

我的要求:我有一个带有select和3个文本框的表单。当我从select中选择特定选项时。我需要去动作类,它将击中DB并获得三个字符串。这3个字符串必须在DYNAMICALLY的3个文本框中填充。

我的问题:(我自己是J2EE的新手将是第一个)我尝试过使用STRUTS2和JQUERY(AJAX)。以下代码将让您了解我尝试过的内容。我的问题是我不知道如何将我的请求发送到动作类并获得响应。 (只使用struts我使用成员变量进行请求,使用taglib进行响应;比如s:property val)

行动类

package com.zayn.wsrdetails;  
public class SelectProjectAction {  
private String data1;  
private String data2;  
private String data3;  
private String proj;  

public String execute()  
{  
    System.out.println("Hey dude Execute runs");  
    String tempVal2=getProj();  
    String check="Project1";  
    if(proj.equals(check))  
    {  
        setData1("ID191");  
        setData2("DG");  
        setData3("100PDS");  
    }  
    System.out.print(tempVal2);  
    return "Success";  
}  
}  

Struts XML

    <?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts    
Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">  
<struts>  
<package name="ProjectSelect" extends="struts-default">   
<action name="Project" class="com.zayn.wsrdetails.SelectProjectAction">   
<result name="Success">/MainPage.jsp</result>  
</action>  
</package>  
</struts> 

JSP页面

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"  
    pageEncoding="ISO-8859-1"%>  
  <%@ taglib prefix="s" uri="/struts-tags" %>  
<!DOCTYPE html>  


<html>  
<head>  
<title>WSR</title>  
<script src="jquery-1.11.1.min.js"></script>  
<script>  
$(document).ready(function(){  

    $("#prj_change").change(function(){  
        var optionSelected = $("option:selected", this).val();  
        alert ("change event occured with value: " + optionSelected);  
          $.ajax({  
                 url:'Project',  
                 data:optionSelected,  
                 success: function(response){  
                     alert ("change event occured with value: " + optionSelected);  
                 }  
});  
});  
});  

</script>  
</head>  

<body>  
<form action="Project" method="post">  
<select id="prj_change">  
  <option value="None">None</option>  
  <option value="Project1">Project1</option>  
  <option value="Project2">Project2</option>  
  <option value="Project3">Project3</option>  
</select>  

<label> Project id :</label><input type="text" name="data1" id="data1"></input><br>  
<label> Project Lead :</label><input type="text" name="data2" id="data2"></input><br>  
<label> Project length :</label><input type="text" name="data3" id="data3"></input><br>  

</form>  
</body>  
</html>  

请告诉我如何才能继续

3 个答案:

答案 0 :(得分:0)

你可以用这种方式传递价值

$.ajax({
      url:"Project",
      data: {"proj" : "optionSelected"},
      .............................
}); 
获取value.simply后设置为textfield。

 $("#prj_change").change(function(){  
     var optionSelected = $("option:selected", this).val();  
     alert ("change event occured with value: " + optionSelected);
    if(){  
         $.ajax({  
              url:"Project?proj=optionSelected",  
              success: function(response){  
                 alert ("change event occured with value: " + optionSelected); 
                 $("#date1").val(<s:property value="data1"/>);
                 $("#date2").val(<s:property value="data2"/>);
                 $("#date3").val(<s:property value="data3"/>);


              }  
           });
          }else{
               slert("you are selected NONE");
                }
  });  

答案 1 :(得分:0)

为此你可以使用简单的json方法。我的网站上提供了一个包含代码的完整示例。请参考。

Example 1

Example 2

Example 3

答案 2 :(得分:0)

第1步:您需要做的第一件事就是对onchange标记进行select方法调用,该标记将转到javascript并获取数据。您将从select标签中接收数据并将其传递给步骤2中的操作。

第2步:在javascript方法中,您需要与操作类进行交互以获取数据。 使用重定向方法,在url中传递参数你可以在这里执行。如果你想发送多个值到action,那么你可以通过表单名称或表单id获取值并使用javascript提交该表单;

第3步:您将获得javascript中的数据,现在通过使用javascript创建选择标记或使用方法显示/隐藏来自js的div并将其设置为jsp页面在那些第二个选择标签..

如果你想让你的javascript从java获取数据,你也可以使用DWR

流程会像这样......我建议你遵循这个流程,这样你就可以学习成为一个新手。所有的最好

相关问题