我使用Seam標記<s:decorate>
,它具有enclose
屬性。默認情況下,它被設置爲true
(您可以在HtmlDecorate
類中看到它)。更改Seam中的標記默認屬性值
在我的應用程序中,所有的標籤都不應該被包含,因此每個標籤上的屬性應該設置爲false
。但是要在每個標籤上指定它並不是非常漂亮的解決方案。
我想在一個地方將默認enclose = true
更改爲false
。有可能通過注射或其他方式嗎?
我使用Seam標記<s:decorate>
,它具有enclose
屬性。默認情況下,它被設置爲true
(您可以在HtmlDecorate
類中看到它)。更改Seam中的標記默認屬性值
在我的應用程序中,所有的標籤都不應該被包含,因此每個標籤上的屬性應該設置爲false
。但是要在每個標籤上指定它並不是非常漂亮的解決方案。
我想在一個地方將默認enclose = true
更改爲false
。有可能通過注射或其他方式嗎?
我發現的唯一方法是覆蓋Seam的decorate
組件與你的。雖然聽起來很複雜,但實現起來相對簡單,並且比每<s:decorate/>
寫enclose="false"
要好。該解決方案依賴於以下事實:位於項目的faces-config.xml
中的組件定義優先於位於庫罐內的faces-config.xml
文件中的定義。
創建自定義組件類,它擴展HtmlDecorate
:我們在<component-class />
標籤指定您的自定義組件類
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;
}
}
聲明你的類作爲類的裝飾組件,在您的faces-config.xml
(注意,在使用平時縫渲染器):
<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>
你很酷!我試圖用Seam組件描述符來覆蓋它,但它不起作用。謝謝 :) –