gpt4 book ai didi

java - 在 Seam 中更改标签默认属性的值

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:51 26 4
gpt4 key购买 nike

我正在使用 Seam 标签 <s:decorate> , 它有一个 enclose属性。默认设置为 true (你可以在 HtmlDecorate 类中看到它)。

在我的应用程序中,不应包含所有标签,因此应将属性设置为 false在每个标签上。但是在每个标签上指定它并不是很漂亮的解决方案。

我想更改默认值 enclose = truefalse在一个地方。是否可以通过注入(inject)或其他方式实现?

最佳答案

我找到的唯一方法是覆盖 Seam 的 decorate与你的组成部分。虽然听起来很复杂,但实现起来相对简单,而且比必须编写 enclose="false" 要好。在每个<s:decorate/> .此解决方案依赖于以下事实:组件定义位于项目的 faces-config.xml 中。优先于位于 faces-config.xml 中的定义位于库 jar 中的文件。

创建扩展 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;
}
}

在您的 faces-config.xml 中将您的类声明为装饰组件的类(请注意,我们在 <component-class /> 标记中指定您的自定义组件类,同时使用通常的 Seam 渲染器):

<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>

关于java - 在 Seam 中更改标签默认属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12598466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com