假设action
属性与<form
标签一起使用。然后施工
<form name="MyAction.action" action="upload?id=<%=request.getParameter("id")%>&name=<%=request.getParameter("name")%>&age=<%=request.getParameter("age")%>&num=<%=request.getParameter("num")%>" method="POST">
应该与当前上下文一起工作。Exception Name: org.apache.jasper.JasperException: equal symbol expected
但是在您的情况下,使用标签时会出现错误消息 ( <s:form
。因此,您不能在 action 属性中使用此 url。此属性应包含用于查找您的操作的纯操作名称。
“我们如何将参数设置为查询字符串?”
实际上我们是用<s:param
标签来做的。例如,当使用超链接时
<s:a action="MyAction">
<s:param name="id" value="%{id}"/>
<s:param name="name" value="%{name}"/>
</s:a>
但是这种结构不适用于标签,除非您应用此<s:form
答案中描述的特殊语法,并且如果您在操作中这样做,您肯定希望获取这些参数
String quesyString = request.getQueryString();
并且此字符串不应为空。
但是,这种用例很少应用,如果您没有理由以这种方式获取参数,那么作为替代方案,您始终可以使用<s:hidden
字段来包含参数的值。例如
<s:form action="MyAction" method="POST">
<s:hidden name="id" value="%{id}"/>
<s:hidden name="name" value="%{name}"/>
</s:form>
这些值作为参数传递并在params
拦截器工作后初始化动作属性。您也可以直接从请求中获取此参数
Map<String, String[]> params = (Map<String, String[]>)request.getParameterMap();
但是,在您的操作中执行此操作的更方便的方法是实现ParameterAware
.