【问题标题】:How can I add or change params to a struts url tag?如何向 struts url 标签添加或更改参数?
【发布时间】:2010-02-10 04:43:07
【问题描述】:

在 struts 中,我希望使用一些参数(<s:url action="getSomeData" id="baseDataUrl"> <s:param name="someID" value="%{currentID}"/> </s:url>

然后我可以执行&lt;s:property value="baseDataUrl" /&gt;,它会输出类似 /getSomeData.do?someID=5 的内容。 (我在这个例子中保持参数简单,但是你可以想象有更多的默认参数。例如,我正在处理的应用程序有 3 个参数对于每个 URL 都是相同的,并且有两个会改变。)

我希望能够在定义该基本 URL 后添加或更改参数。我正在构思两种方法:

<s:url base="baseDataUrl" id="breadUrl"> <s:param name="bread" value="%{'toast'}"/> </s:url>

然后&lt;s:property value="breadUrl" /&gt; 将导致 /getSomeData.do?someID=5&bread=toast。另一种方法是使用占位符定义基本 URL:

<s:url action="getSomeData" id="baseDataUrl"> <s:param name="someID" value="%{currentID}"/> <s:param name="bread" /> <s:param name="jelly" /> </s:url>

然后在我要房产时填写:

<s:param url="baseDataUrl" name="bread" value="%{'toast'}"/> <s:param url="baseDataUrl" name="jelly" value="%{selectedJam}"/>

所以&lt;s:property value="baseDataUrl" /&gt; 将导致 /getSomeData.do?someID=5&bread=toast&jelly=7。

s:url (http://struts.apache.org/2.0.14/docs/url.html) 的文档说“允许动态属性:false”,所以我想我正在冒险进入自定义标签领域。这感觉就像一个我不想重新发明轮子的常见用例(使用一些参数定义一个基本 URL,然后添加或更改其中一些)。搜索没有产生任何结果,但也许我不是在寻找正确的东西。我愿意接受各种各样的建议!

【问题讨论】:

    标签: java jsp struts2 struts


    【解决方案1】:

    以下是我能想到的几个选项

    1. 使用名为“delegatorAction”的操作并仅写入所需的额外参数。您可以编写一个动作/处理程序,然后“推断”其他参数(在本例中为“someID”)。这可能很复杂,您可能必须在每次更改您的 url 处理逻辑时更改此代码
    2. 您可以编写自己的 url 标签并按照您建议的方式说并拥有一个类似于“base”的属性,它只是评估 base 属性并向其添加任何参数(您可以为此创建 Url 标签的子类)李>
    3. 最简单的方法可能是首先将 3 个参数声明为 url,然后使用标准 s:property 标签添加额外的参数(哎呀,即使格式正确,我也无法输出 xml 代码不知道为什么,一定是因为铬)

    在这种方法中,您只是在末尾附加字符串。

    【讨论】:

    • #3 是我最终采用的方法——我定义了一些基本 URL,然后 s:property 将它们删除。这不是最优雅的解决方案,但它使我的 LOC 减少了近 60%!谢谢。
    猜你喜欢
    • 2013-08-09
    • 2012-10-15
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 2021-06-26
    • 2013-12-16
    相关资源
    最近更新 更多