Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以JSP形式动态填充数据(struts)_Java_Jquery_Ajax_Jsp_Struts2 - Fatal编程技术网

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

Java 以JSP形式动态填充数据(struts),java,jquery,ajax,jsp,struts2,Java,Jquery,Ajax,Jsp,Struts2,我的要求:我有一个选择和3个文本框的形式。当我从选择中选择特定选项时。我需要进入动作类,它将击中DB并获得三个字符串。必须在3个文本框中动态填充这3个字符串 我的问题是:我是J2EE新手,这将是我第一次尝试使用STRUTS2和jQueryAjax。下面的代码将告诉您我尝试了什么。我的问题是,我不知道如何将我的请求发送到action类并获得响应。对于struts,我使用成员变量作为请求,使用taglib作为响应;像s:property val 动作类 package com.zayn.wsrdet

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

我的问题是:我是J2EE新手,这将是我第一次尝试使用STRUTS2和jQueryAjax。下面的代码将告诉您我尝试了什么。我的问题是,我不知道如何将我的请求发送到action类并获得响应。对于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";  
}  
}  
StrutsXML

    <?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>  

请让我知道如何在此处继续

您也可以通过这种方式传递值

$.ajax({
      url:"Project",
      data: {"proj" : "optionSelected"},
      .............................
}); 
获取值后,只需设置为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");
                }
  });  

为此,您可以使用简单的json方法。我的网站上有完整的示例和代码。请参阅

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

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

步骤3:您将获得javascript中的数据,现在通过使用javascript创建一个select标记或使用方法从js显示/隐藏div并在第二个select标记中设置这些值,将其返回到jsp页面

此外,如果希望javascript从java获取数据,也可以使用DWR


流程将是这样的…我建议您遵循此流程,这样您就可以学习成为一名新手;这不会用data1、2、3的值填充文本框,因为您没有value属性。因此,请使用setattribute方法。