Struts 2 jquery 自动完成器与 JSON
我在我的表单中使用 atocompleter 和 json。
这是我的 struts.xml 的一部分
<package name="json" namespace="/" extends="json-default">
<result-types>
<result-type name="json" class="com.googlecode.jsonplugin.JSONResult" />
</result-types>
<action name="test" class="testClass" method="populate">
<result type="json" name="success">
<param name="root">itemList</param>
<param name="contentType">text/html</param>
</result>
</action>
</package>
这是 jsp
<s:form id="frm_demo" name="frm_demo" theme="simple" action="test2">
<s:url id="remoteurl" action="test" />
<sj:autocompleter
id="lst"
name="lst"
list="%{remoteurl}"
listValue="name"
listKey="id"
selectBox="true"
/>
<s:submit value="submit"/>
</s:form>
这是操作类方法
public String populate() throws Exception{
itemList.put("1", "a");
itemList.put("2", "b");
itemList.put("3", "c");
return "success";
}
使用 struts.xml 中的上述代码,我的 jsp 呈现如下。{"3":"c","2":" b","1":"a"}
但是当我删除“contentType”参数时,换句话说,内容类型是“application/json”,jsp 会弹出下载窗口。 当我单击提交按钮时,我需要自动完成器返回密钥。但该页面不会使用自动完成程序加载。有什么解决办法吗? ps itemList 我在我的动作类中使用的是一个 HashMap...这有关系吗?
I'm using atocompleter in my form with json.
This is the part of my struts.xml
<package name="json" namespace="/" extends="json-default">
<result-types>
<result-type name="json" class="com.googlecode.jsonplugin.JSONResult" />
</result-types>
<action name="test" class="testClass" method="populate">
<result type="json" name="success">
<param name="root">itemList</param>
<param name="contentType">text/html</param>
</result>
</action>
</package>
This is the jsp
<s:form id="frm_demo" name="frm_demo" theme="simple" action="test2">
<s:url id="remoteurl" action="test" />
<sj:autocompleter
id="lst"
name="lst"
list="%{remoteurl}"
listValue="name"
listKey="id"
selectBox="true"
/>
<s:submit value="submit"/>
</s:form>
This is the action class method
public String populate() throws Exception{
itemList.put("1", "a");
itemList.put("2", "b");
itemList.put("3", "c");
return "success";
}
With the above code in struts.xml my jsp renders like this.{"3":"c","2":"b","1":"a"}
But when I delete the "contentType" parameter, in other words the content type is "application/json" the jsp pops the download window.
I need theauto completer to return the key when i click submit button. But the page doesn't load with the autocompleter. Any solutions?
p.s. itemList i used in my action class is a HashMap... does that matter?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对于集合支持的组件,使用映射是可以的。我认为您的代码存在一些问题。
首先,在操作配置中,您已将根对象设置为
itemList
,这样只有列表的内容才会转换为 json,因此您无法在自动完成器中引用列表本身。其次,您必须为自动完成程序设置
href
属性,并将remoteUrl
设置为它的值。所以你的代码可能是这样的:在你的自动完成器中:
看看是否有效。
Using map is OK with collection-backed components. I think there's couple of problems with your code.
First in you action configuration you have set the root object to your
itemList
, this way only content of the list will be converted to json so you can't refer to the list itself in your autocompleter.Second you have to set the
href
attribute for your autocompleter and set theremoteUrl
as it's value. So your code could be like:In your autompleter:
See if that works.
我认为你的代码没问题,只需删除此代码
I think your code is ok,Just remove this code