【发布时间】:2011-05-06 03:33:33
【问题描述】:
我无法使用Struts 2.2.1.1 获取 JSON 结果。
有没有人有一个简单的工作示例,它使用 Struts 2.2.1.1 将 JSON 结果返回到 JSP,并准备在 Eclipse 中作为 动态运行网络项目?
请包括struts.xml、动作类和JSP 代码。另外,请注意依赖关系。谢谢。
【问题讨论】:
标签: javascript json jsp struts2
我无法使用Struts 2.2.1.1 获取 JSON 结果。
有没有人有一个简单的工作示例,它使用 Struts 2.2.1.1 将 JSON 结果返回到 JSP,并准备在 Eclipse 中作为 动态运行网络项目?
请包括struts.xml、动作类和JSP 代码。另外,请注意依赖关系。谢谢。
【问题讨论】:
标签: javascript json jsp struts2
这是使用 Struts 2 jQuery 插件创建简单 JSON 示例的方法。
Echo.java、JsonSample.java 和ListValue.java 导入到test 包中,并通过快速修复将代码移到包中。Echo.java和JsonSample.java中的类注解改为@ParentPackage(value = "test")
创建一个struts.xml 文件并添加以下 XML:
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.convention.action.packages" value="test" />
<package name="test" extends="json-default” namespace="/">
</package>
</struts>
创建一个 index.jsp 文件并插入以下代码:
<s:form id="form2" action="echo" theme="xhtml">
<s:url id="remoteurl" action="jsonsample" />
<sj:checkboxlist href="%{remoteurl}" id=“remoteCheckboxlist” name="echo" list="languageList" label="Language" />
<sj:submit targets="formResult" value="AJAX Submit" indicator=“indicator” button="true"/>
</s:form>
运行示例。
【讨论】:
必看:struts2-x.x.x-all.zip /apps/struts2-showcase-2.2.1.war
Struts 2 and JSON example
Struts 2 autocompleter + JSON example
【讨论】:
让 Json 与 struts2 一起工作非常简单。
为此,
您需要将 struts-json 插件*(jsonplugin-0.32.jar)* 添加到类路径。
你的 struts.xml 文件应该扩展 json-default
<package name="base" namespace="/" extends="json-default">
你的动作结果是这样的。
<result type="json"><param name="root">jsonData</param></result>
在action类里面,声明json为
private LinkedHashMap<K, V> jsonData new LinkedHashMap<k, V>();
然后将结果列表添加到json就像
jsonData.put("result", anyList or object);
这就是我们所要做的。然后我们可以使用javascript访问结果。
【讨论】:
试试这个,将在 Struts 2.0.14 中使用 jsonplugin-0.32.jar 帮助您。
struts.xml:
<struts>
<package name="example" extends="json-default">
<action name="HelloWorld" class="example.HelloWorld" >
<result type="json" />
</action>
<action name="HelloWorld1" class="example.HelloWorld" >
<result name="success" >example/HelloWorld.jsp</result>
</action>
</package>
</struts>
动作类Helloworld.java:
package prabhakar;
import glb.DB;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* Prabhakar
*/
public class HelloWorld {
private List<StateMaster> stateList= new ArrayList<StateMaster>();
private List<RegnMaster> regnList= new ArrayList<StateMaster>();
private Integer stateId;
public Integer getStateId()
{
return this.stateId;
}
public void setStateId(Integer stateId)
{
this.stateId=stateId;
}
public List<StateMaster> getStateList() {
return stateList;
}
public void setStateList(List<StateMaster> stateList) {
this.stateList = stateList;
}
public void setRegnList(List<RegnMaster> regnList) {
this.regnList = regnList;
}
public List<RegnMaster> getRegnList() {
return regnList;
}
public String execute() throws Exception {
stateList=DB.getStateData()//
if(stateId !=null)
{
regnList=DB.getRegnByStateId(stateId);
}
//setMessage(getText(MESSAGE));
return "success";
}
/**
* Provide default valuie for Message property.
*/
}
您可以直接调用 HelloWorld.action 来查看 JSON 数据,也可以将 JSON 数据绑定到下面的表单元素。
JSP 页面 HelloWorld.jsp:
/*
Prabhakar
*/
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<script>
<%@include file="../js/jquery-1.7.1.min.js"%>
</script>
<html>
<!-- JavaScript Plugins -->
<script>
function getLoad(){
var stateId = $('#state').val();
$.getJSON('HelloWorld.action', {'stateId': stateId},
function(data) {
var divisionList = (data.regnList);
var options = $("#regn");
options.find('option')
.remove()
.end();
options.append($("<option />").val("-1").text("--Select--"));
$.each(divisionList, function() {
options.append($("<option />").val(this.regnId).text(this.regnName));
});
}
);}
</script>
<!-- jQuery-UI Dependent Scripts -->
<body>
State List <s:select name="stateId" list="stateList" id="state" listKey="stateId" onchange="getLoad()" listValue="stateName" headerKey="0" headerValue="--select--" />
Regn List <s:select name="regnId" list="regnList" listKey="regnId" id="regn" listValue="regnName" headerKey="0" headerValue="--select--" />
</body>
</html>
编码愉快:)
【讨论】: