假设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.