java - JSF - 自定义标签 - 刷新后动态值消失

标签 java html jsf-2 tags

我关注了 this JSF 2.1 中实现选取框标签的教程并部分成功。由于此标签支持动态数据,例如#{bean.var} 作为一个值,我决定在组件内部对其进行修改。

但是,重新加载页面后,该值消失了。标签仍然存在,但内容消失了。

  1. 您能否告诉我如何正确实现,以便我可以在值属性中使用我的动态值?
  2. 或者您能否向我指出导致我的组件类中出现错误的代码的正确方向?

非常感谢!

http://myjavabuddy.blogspot.de/2013/04/writing-custom-components-for-jsf-20.html

这是我的 JSF

<customJSF:marquee value="" />

这是我的组件

@FacesComponent ("amelunxenfast.prog3.wissensmanagement.components.marquee")
public class MarqueeComponent extends UIComponentBase {

  public static final String COMPONENT_TYPE = "com.himanshu.jsf.custom.marquee";

    String value = null;

    @EJB
    FeedEJB ejb;

    public String getValue() {
        return value;
    }

    @Override
    public String getFamily() {
        return COMPONENT_TYPE;

}

@Override
public void encodeBegin(FacesContext context) throws IOException {
    ResponseWriter writer = context.getResponseWriter();
    writer.startElement("marquee", this);
    writer.writeAttribute("scrollamount", "10", "");
    writer.write(ejb.getFeedString());
    writer.endElement("marquee");
}


@Override
public void encodeEnd(FacesContext arg0) throws IOException {
    super.encodeEnd(arg0);
}

public void setValue(String value) {
    this.value = value;
}

}

最佳答案

评论太长了...

我认为在 @FacesComponent 中注入(inject) @EJB 是不合法的,而且在这种特定情况下,我认为这不是一个好的做法。

我认为更好的方法应该是使用您自己的类扩展 TextRenderer,在 faces-config 中声明一个新组件并以与使用 h:outputText 相同的方式使用它(在 value 属性中传递 ValueExpression)

关于java - JSF - 自定义标签 - 刷新后动态值消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21948157/

相关文章:

java - 序列化对象的文件扩展名

java - 如何使用 netbeans IDE 在图像上添加按钮?

javascript - 在各种设备上显示不同的图像

javascript - 页脚后面的 Bootstrap Accordion 下拉菜单

java - 在Android Java中显示外语字符

jsf - 使用 CKEditor 代替 PrimeFaces 编辑器

java - 为什么在java内存模型下java.lang.Class.newInstance0()不是严格正确的?

java - 将 java 对象序列化为 objective-c plist

javascript - 在 JavaScript if 语句中调用 Bean 函数来评估 Primefaces 对象

java - 带有 ajax 更新的 JSF selectOneButton - setter 调用 2 次