我关注了 this 在 JSF 2.1
中实现选取框标签的教程并部分成功。由于此标签不支持动态数据,例如#{bean.var}
作为一个值,我决定在组件内部对其进行修改。
但是,重新加载页面后,该值消失了。标签仍然存在,但内容消失了。
- 您能否告诉我如何正确实现,以便我可以在
值属性
中使用我的动态值? - 或者您能否向我指出导致我的
组件类
中出现错误的代码的正确方向?
非常感谢!
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/