【问题标题】:Dynamically change parameter of a struts2 url动态更改struts2 url的参数
【发布时间】:2011-09-05 15:27:12
【问题描述】:

我在 struts2 框架中将参数动态分配给 url 时遇到问题。 我为此苦苦挣扎了几天,但无法正常工作。 一点背景知识,我正在使用 struts2 做一个 Web 应用程序,我也使用 JQuery 插件。 我有两个需要相互链接的自动完成功能,我发现这样做的最佳方法是将第一个自动完成程序上所选项目的 id 传递给第二个自动完成程序以缩小其选项。

所以我正在做的是这样的事情,如此处所述http://struts.apache.org/2.2.3/docs/url.html

<s:url id="contactsautocompleterurl" action="contacts-autocompleter">
    <s:param name="companyId" value="%{companyId}"></s:param>
</s:url>

<s:hidden id="contact_company_id" name="companyId"></s:hidden>

我使用 JQuery 设置了隐藏字段的值,我可以看到该值正在更改。我的问题是将该值放入参数中。我也试过这样还是不行

<s:param name="companyId" value="%{contact_company_id}"></s:param>

我确定我遗漏了一个小细节,希望有人指出。

提前致谢。

【问题讨论】:

    标签: java url parameters tags struts2


    【解决方案1】:

    我不确定我是否理解你,但我认为你不能用“s:”标签来做,因为这些是在页面生成时在服务器端处理的,一旦页面完成就不能再次处理正在加载。

    【讨论】:

    • 谢谢,就是这样。隐藏字段必须在服务器端设置。问候
    【解决方案2】:

    您必须使用 jQuery 客户端构建 URL。您可以使用 s:url 标记创建 URL,并在页面上进行选择后在 javascript 中对其进行操作。

    <s:url id="contactsautocompleterurl" action="contacts-autocompleter" />
    <script type="text/javascript">
        var actionURL = '<s:property value="%{contactsautocompleterurl}" />';
    
        $('#companyIdSelect').change(function(){
            var companyIDvalue = $(this).val();
            actionURL += '?companyId=' + companyIDvalue;
         });
    </script>
    

    这应该会产生您正在寻找的结果,然后您只需将 actionURL javascript 变量分配到您需要的任何位置。

    【讨论】:

    • 感谢您的回答,这应该可以解决问题,但我已经猜到出了什么问题。我必须在呈现页面之前设置隐藏 ID,我没有这样做,我只是在客户端通过 jquery 设置隐藏值,而隐藏字段必须在服务器端设置。另一种解决方法是您建议的解决方法。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2015-03-10
    • 2016-01-22
    • 2014-06-17
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多