您的网站在java网站开发方面给了我很多帮助。我唯一的障碍是通过struts2
动作类(使用jtable)在javascript中填充下拉列表。我使用了您的示例代码" AJAX based CRUD operation in Struts 2 using jTable plugin"
。
在下面的代码片段中,我想要使用ist2
类的com.action.JtableAction
方法从数据库获取值的下拉列表。
userDefinedJtable.js:
department : {
title : 'Department',
width : '30%',
edit : true,
options : '/WebApplication1/list2Action',
list: false
},
JtableAction中的 list2
方法
public String list2() {
JSONObject obj = new JSONObject();
obj.put("name", "foo");
obj.put("num", new Integer(100));
obj.put("balance", new Double(1000.21));
obj.put("is_vip", new Boolean(true));
return obj.toString();
}
struts.xml中的声明
<action name="getJSONResult" class="com.action.JtableAction" method="list2">
<result type="json" />
</action>
但是当我访问
时 /WebApplication1/list2Action
我收到此错误
HTTP状态404 - 没有为动作com.action.JtableAction定义结果 和结果{&#34;余额&#34;:1000.21,&#34; num&#34;:100,&#34; is_vip&#34;:true,&#34; name&#34;:&#34; foo& #34;}
请帮助我,不管我做得对不对。 而且需要什么。
修改
struts.xml中
<struts>
<package name="default" extends="json-default">
<action name="*Action" class="com.action.JtableAction" method="{1}">
<result type="json">/jTable.jsp</result>
</action>
<action name="getJSONResult" class="com.action.JtableAction" method="list">
<result type="json" />
</action>
<action name="getJSONResult" class="com.action.JtableAction" method="list2">
<result type="json">
<param name="root">obj</param>
</result>
</action>
</package>
</struts>
答案 0 :(得分:0)
假设您使用的是Struts2-JSON-plugin,
在课程级别将您的对象设为私有,为其提供一个getter:
private JSONObject obj;
public getJSONObject() {
return obj;
}
将您的退货类型更改为SUCCESS:
public String list2() {
obj = new JSONObject();
obj.put("name", "foo");
obj.put("num", new Integer(100));
obj.put("balance", new Double(1000.21));
obj.put("is_vip", new Boolean(true));
return SUCCESS;
}
在结果定义中添加root
对象参数:
<action name="getJSONResult" class="com.action.JtableAction" method="list2">
<result type="json">
<param name="root">obj</param>
</result>
</action>
详细了解其工作原理here。
编辑
你的struts.xml至少有两个大错误
固定代码:
<struts>
<package name="default" extends="json-default">
<action name="*Action" class="com.action.JtableAction" method="{1}">
<result>/jTable.jsp</result>
</action>
<action name="getJSONResult1" class="com.action.JtableAction" method="list">
<result type="json" />
</action>
<action name="getJSONResult2" class="com.action.JtableAction" method="list2">
<result type="json">
<param name="root">obj</param>
</result>
</action>
</package>
</struts>
显然,您需要更改最后添加1或2的getJSONResult
来电的名称。
P.S:考虑使用不同的动作类,以获得更小的动作和更细粒度。