私が見つけた唯一の方法は、Seam のdecorate
コンポーネントをあなたのものでオーバーライドすることです。複雑に聞こえますが、実行するのは比較的簡単でenclose="false"
、すべての<s:decorate/>
. このソリューションは、プロジェクトにあるコンポーネント定義が、ライブラリ jar 内faces-config.xml
にあるファイルにある定義よりも優先されるという事実に依存しています。faces-config.xml
を拡張するカスタム コンポーネント クラスを作成しますHtmlDecorate
。
public class MyDecorate extends HtmlDecorate {
// Default value is false, as opposed to HtmlDecorate
private boolean _myenclose = false;
// Default constructor
public MyDecorate() {
super();
}
// Override setEnclose() and isEnclose() so that they use your variable
public boolean isEnclose() {
return _myenclose;
}
public void setEnclose(boolean enclose) {
this._myenclose = enclose;
}
}
クラスをデコレート コンポーネントのクラスとして宣言します(通常の Seam レンダラーを使用しているときに、タグでfaces-config.xml
カスタム コンポーネント クラスを指定していることに注意してください)。<component-class />
<component>
<description>"Decorate" a JSF input field when validation fails or when required="true" is set.</description>
<component-type>org.jboss.seam.ui.Decorate</component-type>
<component-class>com.example.myapp.MyComponent</component-class>
<component-extension>
<component-family>org.jboss.seam.ui.Decorate</component-family>
<renderer-type>org.jboss.seam.ui.DecorateRenderer</renderer-type>
</component-extension>
</component>
ページで通常どおりタグを使用<s:decorate/>
します。
<s:decorate template="...">
....
</s:decorate>