我的要求:我有一个带有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>
请告诉我如何才能继续
答案 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)
答案 2 :(得分:0)
第1步:您需要做的第一件事就是对onchange
标记进行select
方法调用,该标记将转到javascript
并获取数据。您将从select标签中接收数据并将其传递给步骤2中的操作。
第2步:在javascript
方法中,您需要与操作类进行交互以获取数据。
使用重定向方法,在url中传递参数你可以在这里执行。如果你想发送多个值到action,那么你可以通过表单名称或表单id获取值并使用javascript提交该表单;
第3步:您将获得javascript中的数据,现在通过使用javascript创建选择标记或使用方法显示/隐藏来自js的div并将其设置为jsp页面在那些第二个选择标签..
如果你想让你的javascript从java获取数据,你也可以使用DWR