我无法使用Struts 2.2.1.1获取JSON结果。
有没有人有一个简单的工作示例,它使用 Struts 2.2.1.1 将JSON结果返回给JSP,并准备在 Eclipse 中作为动态运行网络项目?
请包含struts.xml,action类和JSP代码。另外,请注意依赖项。谢谢。
答案 0 :(得分:4)
以下是使用Struts 2 jQuery插件创建简单JSON示例的方法。
Echo.java
,JsonSample.java
和ListValue.java
导入测试包,然后通过快速修复将代码移到包中。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>
运行示例。
答案 1 :(得分:0)
必须参见:struts2-x.x.x-all.zip /apps/struts2-showcase-2.2.1.war
Struts 2 and JSON example
Struts 2 autocompleter + JSON example
答案 2 :(得分:0)
让Json使用struts2非常简单。
为此,
您需要将struts-json插件* (jsonplugin-0.32.jar) *添加到classpath。
您的struts.xml文件应扩展为 json-default
<package name="base" namespace="/" extends="json-default">
您的行动结果是这样的。
<result type="json"><param name="root">jsonData</param></result>
在内部操作类中,将json声明为
private LinkedHashMap<K, V> jsonData new LinkedHashMap<k, V>();
然后将结果列表添加到json,如
jsonData.put("result", anyList or object);
这就是我们所要做的一切。然后我们可以使用javascript访问结果。
答案 3 :(得分:0)
尝试这一点,将使用jsonplugin-0.32.jar帮助您使用Struts 2.0.14。
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>
快乐编码:)