問題が組み込みの struts2 機能を使用することである場合、1 つの簡単なオプションは、属性の動的な追加を容易にサポートする freemarker を使用してビューをレンダリングすることです。
規則を使用している場合、拡張子が「.ftl」のファイルを作成するだけで非常に簡単です。xml を使用している場合は、freemarker の結果タイプを使用するだけで非常に簡単です (詳細については、こちらを参照してください)。
<action name="test" class="package.Test">
<result name="success" type="freemarker">/WEB-INF/content/testView.ftl</result>
</action>
マップを使用して属性を動的に追加するビューの例を次に示します (例も「いいね!」ページから取得):
<@s.textfield name="test" dynamicAttributes={"placeholder":"input","foo":"bar"}/>
dynamicAttributes はすべての JSP UI タグで非常に便利ですが、残念ながら現在は実装されていません。
注: 上記のリンクには 1 つの誤りまたは脱落があります。私の環境でエラーを引き起こす次の行を追加するように指示します(単に行は必要ありません)。
<#assign s=JspTaglibs["/WEB-INF/struts.tld"] />
つまり、ファイル内のこの行だけで、テキスト要素をレンダリングするのに十分であり、明示的なタグ ライブラリ宣言は必要ありません!
<@s.textfield name="test" dynamicAttributes={"placeholder":"input","foo":"bar"}/>
単純な JSP よりも freemarker を使用することには多くの利点があるため、少し時間を取って構文を調べて、この 1 つのケースでそれを使用すると、後で役に立つことがわかるかもしれません。