2010-06-17 25 views
1

我使用Struts2的,现在在我的JSP文件中我有2个变量的问题:Struts2的,在一个地址为2级的变量

${server_address} 
${pageContext.request.contextPath} 

现在我想将它连接在我的标签:

<s:form action="%{server_address}%{pageContext.request.contextPath}/actionName.action"> 

但是生成的输出看起来像这样:

<form method="post" action="http://10.0.0.5:8088/actionName.action" name="actionName" id="actionName"> 

没有contextPath中...我怎么能连接这两个可变?

回答

2

尝试这样的事情

<s:set var="baseUrl">${server_address}${pageContext.request.contextPath}</s:set> 

<s:set var="actionUrl">${baseUrl}<s:url action="actionName"/></s:set> 

<s:form action="%{actionUrl}"> 
`enter code here`... 
</s:form> 
+0

工程就像一个魅力! $ {server_address} $ {attr.request ['javax.servlet.forward.context_path']} – tzim 2010-06-17 13:21:59

2

使用${pageContext}而不是%{pageContext}pageContext在Struts2的范围内不可用,但在JSP范围内。

+0

好吧,这是解我需要的部分。 现在我怎样才能在上面的表单中添加$ {pageContext}动作? 我有这个异常,如果我使用$而不是%:根据标记文件中的TLD或属性指令,属性值不接受任何表达式 – tzim 2010-06-17 12:26:42

+0

对不起,我不做Struts2。在不进入代码细节的情况下,我会说你基本上需要在Struts2 bean中获取'HttpServletRequest',然后委托它。作为一个完全不同的建议,使用HTML''标签。 – BalusC 2010-06-17 12:30:23

+0

好的,我找到了。 $ {attr.request ['javax.servlet.forward.context_path']}但是,如何连接2个或更多的字符串变量到新的或我如何将这2个变量添加到我的s:窗体,所以它会起作用? – tzim 2010-06-17 13:06:33

0

在Struts 2.3工作

  <c:set var="businessActionMapping" value="foo" scope="session"/> 
      <s:form action="%{#session.businessActionMapping}" 

您可能需要设置altSyntax = TRUE在struts.properties