将参数从地图添加到 URL 标记
我想向 Struts2 URL 标记添加可变参数列表。 我有会话中对象中的参数(名称值对)的映射。 我正在努力寻找一个好的方法来解决这个问题。 下面是相关的 JSP 代码:
<s:iterator value="%{#session['com.strutsschool.interceptors.breadcrumbs']}" status="status">
<s:if test="#status.index > 0">
»
</s:if>
<s:url id="uri" action="%{action}" namespace="%{nameSpace}">
<s:param name="parameters" value="%{parameters}"/>
</s:url>
<nobr><s:a href="%{uri}"><s:property value="displayName"/></s:a></nobr>
</s:iterator>
参数变量是一个包含参数的 Map。 这当然行不通,但我目前看不到解决这个问题的方法。 我目前在想,我可能需要一个自定义的 freemarker 模板。 有人能建议更好的方法吗?
I want to add a variable list of parameters to a Struts2 URL tag. I have a map of the parameters (name value pairs) in an object in the session. I'm struggling to find a good approach to this. Here is the relevant JSP code:
<s:iterator value="%{#session['com.strutsschool.interceptors.breadcrumbs']}" status="status">
<s:if test="#status.index > 0">
»
</s:if>
<s:url id="uri" action="%{action}" namespace="%{nameSpace}">
<s:param name="parameters" value="%{parameters}"/>
</s:url>
<nobr><s:a href="%{uri}"><s:property value="displayName"/></s:a></nobr>
</s:iterator>
The parameters variable is a Map that contains the params. This, of course does not work but I cannot see a way to approach this at the moment. I'm thinking at the moment that I might need a custom freemarker template for this. Can anyone suggest a better way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
也许你可以像这样使用 JSTL 标签,
我知道将 EL 与 OGNL 等混合在一起有些犹豫,但这可行......
Maybe you can use JSTL tags like this
I know there is some hesitation to mix EL with OGNL etc but this works...
Parameter 标记仅将参数填充到其直接前代。 将迭代器标签包裹在参数标签周围没有任何效果。 :)
为了解决这个问题,您可以轻松编写一个可以直接使用映射的替代参数标签
该标签可能看起来像这样。
并且您需要一个相应的顶级域名条目
The Parameter tag populates parameters only to its direct antecessor. Wrappings an iterator tag around the parameter tag has no effect. :)
To solve this you can easily write an alternative parameter tag wich can use a map direclty
The tag may look like this.
And you need a corresponding tld-entry
您可以使用迭代器来迭代映射
,但迭代器将消耗参数,因为它是参数的父组件。
查看在 Struts2 中向 URL 添加任意参数了解如何使用导致类似
iterable-param 的自定义标记是一个自定义组件,在父级是迭代器的情况下返回参数的祖父级。
You can iterate over a map using
but the iterator will consume the parameters as it's the parent component of the param.
Check outAdding arbitrary parameters to a URL in Struts2 for how to do this with a custom tag which results in the similar
iterable-param is a custom component that returns the grandparent of the param in the case where the parent is an iterator.
参考评论 3,请说明您将如何在 jsp 中使用此自定义标记来实现所需的行为。
另外,要使用评论 1 中提到的解决方案,我们需要在 tld 文件中添加什么条目?
请让我知道这一点。
With reference to comment 3, please show how would you use this customized tag in your jsp to achive the required behaviour.
Also, to use the solution mentioned in comment 1, what is the entry that we need to do in a tld file?
Please let me know this.