addActionMessage
andaddActionError
メソッドを使用してstruts2アクションクラスにエラーとメッセージを追加しました。このメッセージとこのエラーをhtmlページに表示するためのコードが必要ですか?印刷することはできますか?
1 に答える
置く
<s:actionerrors />
と
<s:actionmessages />
JSP 内のタグ
そして、より良いグラフィカルな結果を得るには、特定の div コンテナー (たとえば、1 つの赤、1 つの緑) を使用し、メッセージまたはエラーがあるかどうかを前に確認します (空でない場合にのみ div を出力するため)。
<s:if test="hasActionErrors()">
<div class="feedError">
<s:actionerrors />
</div>
</s:if>
<s:if test="hasActionMessages()">
<div class="feedOk">
<s:actionmessages />
</div>
</s:if>
そしてCSSで
.feedError{
width: 100%;
border: 10px solid red;
}
.feedOk{
width: 100%;
border: 10px solid green;
}
編集: いいえ、私が知る限り、アクション エラーとメッセージを HTML から直接取得することはできません。セッションからそれらを取得し、JSON で返すアクションに対して ajax 呼び出しを行うことができますが、これは本当にやり過ぎであり、設計が悪く、必要ではありません。
解決策として、JSP の代わりに別のビュー テクノロジを使用できます。それは単なる HTML ではありませんが、少なくともページ内でスクリプトレットを使用することはできません (それが JSP の使用に関する問題である場合)。
たとえば、FreeMarker Templateを使用できます。
以前の JSP スニペットは、.ftl ファイルでは次のようになります (未テスト)。
<#if (actionErrors?size>0)>
<div class="feedError">
<@s.actionerror />
</div>
</#if>
<#if (actionMessages?size>0)>
<div class="feedOk">
<@s.actionmessage />
</div>
</#if>
または速度(これもテストされていません):
#if( $actionErrors.size() > 0 )
<div class="feedError">
#foreach( $msg in $actionErrors )
[$msg]<br />
#end
</div>
#end
#if( $actionMessages.size() > 0 )
<div class="feedOk">
#foreach( $msg in $actionMessages )
[$msg]<br />
#end
</div>
#end
注: JSP を使用しない理由がスクリプトレットを防止することである場合は、この動作を web.xml 追加で構成できます。
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>
Struts2 で JSP を使用することが唯一の方法ではありませんが、それが最も簡単で最速です。