[英]Get component IDs and values that are generated dynamically
我有一个调查表,其中所有程序(问题)都以编程方式在我的后备豆中生成。
在表单提交事件中,我需要收集所有用户输入并将其存储在db中。
但是JSF无法识别动态生成的组件,而只能找到Facelets页面中的面板网格和提交按钮。 这是我的Submit()方法。
public boolean submit() {
UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
UIComponent formComponent = viewRoot.findComponent("mainForm"); //form id
HtmlForm form = (HtmlForm)formComponent;
List<UIComponent> componentList = form.getChildren();
for(int p=0; p<componentList.size(); p++) {
UIComponent component = componentList.get(p);
System.out.println("The Component ID is:"+component.getId());
}
return true;
}
那么,除了上述方法之外,有人知道我可以在哪里寻找我的组件吗?
这不是收集提交值的正确方法。
相反,您应该将组件的value属性绑定到bean属性。 例如
UIInput input = new HtmlInputText();
input.setId("input1");
input.setValueExpression("value", createValueExpression("#{bean.input1}", String.class));
form.getChildren().add(input);
这样,JSF只会以通常的方式更新bean属性。
private String input1; // +getter+setter
public void submit() {
System.out.println(input1); // Look, JSF has already set it.
}
您可以利用Map<String, Object>
属性带来更多动态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.