【问题标题】:Struts2 - how to generate internationalized url's?Struts2 - 如何生成国际化的 url?
【发布时间】:2011-11-29 18:39:03
【问题描述】:

我有一个应用程序需要重定向到几个国际化的 url,即

  • www.mydomain.com/us/myapp/xxx.action
  • www.mydomain.com/fi/myapp/xxx.action
  • dwww.mydomain.com/de/myapp/xxx.action

我们有一个代理服务器,其中 url 映射到 myapp/xxx.action?country=us 并重定向到应用程序服务器。问题是如何重定向到上述格式的下一个动作?

现在,下一个动作的 url 是通过使用来自 url 的国家并添加上下文路径和动作名称生成的,并由 jsp 中的 javascript 打开。

例子:

<body onload="javascript:top.location='${generatedPath}';return true;"></body>

示例表单提交:

<s:form id="form" action="%{generatedPath}" theme="simple" method="post" includeContext="false">

希望以不那么骇人听闻的方式执行此操作,并使用 struts.xml 和类型 redirectAction 进行了一些测试,但似乎无法生成上面的 url,国家/地区位于上下文路径之前。 我还没有找到任何描述这一点的 struts2 文档,但不确定我是否也在寻找正确的地方?这应该在其他地方处理吗?

【问题讨论】:

    标签: java struts2


    【解决方案1】:

    我认为下面的讨论可以帮助你:

    How to do dynamic URL redirects in Struts 2?

    在这里,您的结果将如下所示:

    <result name="redirect" type="redirect">${url}</result>
    

    而且,动作是:

    private String url;
    private String country;
    
    public void setCountry(String country) {
       this.country = country;
    }
    
    public String getUrl()
    {
     return url;
    }
    
    public String execute()
    {
     url = "www.mydomain.com/" + country + "/myapp/xxx.action";
     return "redirect";
    }
    

    【讨论】:

    • 感谢您的回复。我看过那个讨论并最终以类似的方式实现,使用codefalse ${生成路径} code。这工作得很好,比我们以前的要好得多,但我仍然想知道是否有一种标准的方式来处理像这样的 url 中的语言环境..
    • 抱歉,代码标记有点吃力。&lt;result type="redirectAction"&gt; &lt;param name="prependServletContext"&gt;false&lt;/param&gt; &lt;param name="actionName"&gt;${generatedPath}&lt;/param&gt; &lt;/result&gt;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2012-10-15
    • 1970-01-01
    • 2011-11-15
    相关资源
    最近更新 更多