この問題には多くの解決策があり、タグの数、必要な最もクリーン/最短のコード比率などに応じて、それぞれがより適切に適合します...
たとえば、次のことができます。
変数を設定し、テキストフィールドで使用します:
<s:set var="disabled" value="%{condition}"/>
<s:textfield ... disabled="%{#disabled}" />
@PredragMaric の回答のように、ブール値を返すアクション メソッドを使用します。
public boolean getConditionFromAction(){
return (foo!=bar);
}
<s:textfield ... disabled="%{conditionFromAction}" />
2 つの JSP スニペットを作成し、それらを含めます (無効にしただけではやり過ぎですが、完全に異なるフィールドのセットを表示するなど、他の場合には役立ちます)。
<s:if test="%{condition}">
<s:include page="snippetA.jsp" />
</s:if>
<s:else>
<s:include page="snippetB.jsp" />
</s:else>
(その場合、忘れずに
<%@ taglib prefix="s" uri="/struts-tags" %>
スニペットでも)。
ページの読み込み時に JavaScript を使用してそれらを無効にする (jQuery の例):
<script>
$(function(){
<s:if test="%{condition}">
$("input[type='text']").attr('disabled','disabled');
</s:if>
<s:else>
$("input[type='text']").removeAttr('disabled');
</s:else>
});
</script>
(明らかにクラスセレクターを使用する方が良い)。
あなたの最新のコメントについて:
特定の条件が真の場合、フィールドを無効にして、それ以上編集できないようにしたいと考えています。
すべてのユーザーが HTML / DOM を (Firebug、FF DevTools、Chrome DevTools などを使用して) 変更したり、ページにアクセスしなくてもアドホックにリクエストを偽造したりできるため、サーバー側のコントロールを実行する必要があることを覚えておいてください。無効にしたフィールドを有効にします。
クライアント側の検証はユーザーフレンドリーで、最初のフィルターとして高く評価されています。サーバー側の検証は必須です。