我在操作中追加参数,但是我的Struts 2页面上有一个例外。
PWC6212: equal symbol expected
以下是我要提交的附加参数代码的操作。
action="MyAction.action?id=<%=request.getParameter("id")%>&name=<%=request.getParameter("name")%>&age=<%=request.getParameter("age")%>&num=<%=request.getParameter("num")%>"
以上是语法问题吗?如果没有,那么我们如何将参数设置为带有动作的查询字符串?
答案 0 :(得分:3)
你应该不使用Scriptlets(<%= %>
)
而且,如果action
是Struts标记的属性(例如<s:form>
),那么不能使用scriptlet,您应该使用OGNL
。
请参阅此问题:Struts 2 s:select tag dynamic id了解详情
答案 1 :(得分:2)
假设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
标签时发生了<s:param
。因此,您不能在action属性中使用此url。此属性应包含将用于的简单操作名称找到你的行动。
“我们如何将参数设置为查询字符串?”
实际上我们使用<s:a action="MyAction">
<s:param name="id" value="%{id}"/>
<s:param name="name" value="%{name}"/>
</s:a>
标记。例如,使用超链接时
<s:form
但是这种结构不适用于String quesyString = request.getQueryString();
标记,除非你应用this回答中描述的特殊语法,如果你在动作中你肯定想要获取这些参数
<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
但是,在您的操作中执行此操作的更方便的方法是实现{{1}}。
答案 2 :(得分:0)
就像@AndreaLigios提到的那样,你应该使用Struts2指定的EL,在这里查看Document。
如果您使用的是<s:url/>
,请查看Document了解详情。
您的代码应如下所示:
<s:url value="MyAction.action">
<s:param name="id" value="%{#parameters.id}" />
<s:param name="name" value="%{#parameters.name}" />
<s:param name="age" value="%{#parameters.age}" />
<s:param name="num" value="%{#parameters.num}" />
</s:url>