jsp头文件是:
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
我想使表单操作url基于basePath
。我尝试了不同的标签,但它没有工作!<%=basePath%>
不起作用;也许是因为struts2标签首先呈现。无论我做什么尝试和错误与#, %, {
或属性标签,我不能使它工作!例如<s:form name="searchItem" action="%{basePath + '/AdvancedSearch.action'}">
就是一个不成功的尝试!
我只是可以让它工作用一个肮脏的hack:
<s:set var="searchUrl"><%=basePath%>AdvancedSearch.action</s:set>
<form name="searchForm" method="get" class="searchform" action="%{searchUrl}">
但是我希望有一个更好的hack来让我消除<s:set>
标签行!
正如@Quaternion所说:
这里已经解释了struts2将为表单构造url,只需设置命名空间和相应的动作属性。如果您需要在一般情况下可以使用s:url标签,添加参数时使用s:param标签。
s:url标签,并且有很多在线示例。此外,如果你使用get方法的形式,你可以使用s:hidden tags.