3

パラメータにアクションを追加していますが、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")%>"

上記は構文の問題ですか?そうでない場合、どうすればパラメータをアクション付きのクエリ文字列として設定できますか?

4

3 に答える 3

3

スクリプトレット ( )は使用しないでください<%= %>

また、actionが Struts タグの属性 ( など<s:form>) である場合は、スクリプトレットを使用できませんOGNL。使用する必要があります。

詳細については、この質問を参照してください: Struts 2 s:select tag dynamic id

于 2013-02-01T11:19:10.717 に答える
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ます。したがって、このURLをaction属性で使用することはできません。この属性には、アクションの検索に使用されるプレーンなアクション名が含まれている必要があります。

「パラメータをクエリ文字列として設定するにはどうすればよいですか?」

<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です。

于 2013-02-01T13:18:29.787 に答える
0

@AndreaLigiosが述べたように、Struts2で指定されたELを使用する必要があります。ここで、ドキュメントを確認してください。

を使用している場合は、詳細についてドキュメント<s:url/>を確認してください。

コードは次のようになります。

<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>
于 2013-02-01T13:17:56.457 に答える