我需要在加载 jsf 页面之前执行 Web 服务(方法)调用。该调用将返回必须在我的 jsf 页面上显示的输入字段列表。用户可以填写表格,然后单击下一步,我需要将在表格中输入的值发送回另一个 Web 服务(方法)。我的方法是为 jsf 页面创建一个请求范围的 bean(由空白表单和对 bean 的绑定组成),并在我的表单方法的 setter 方法中执行 Web 服务调用并动态创建 UIInput 字段
//call web service
//Loop
UIInput input = new HtmlInputText();
//set unique Id
form.getChildren().add(input);
//End Loop
它确实创建了输入字段,但是如果我执行浏览器返回或刷新它会继续添加输入字段。很明显我的方法是错误的。
我还发现,当我尝试在提交操作上获取这些动态创建的输入字段的值时,例如
List<UIComponent> dynamicFields = form.getChildren();
for(int i=0;i<form.getChildCount();i++){
if("javax.faces.Input".equals(componentFamily)){
UIInput input = (UIInput)dynamicFields.get(i);
System.out.println("Input Field: ID = "+input.getId() + " , Value="+ input.getValue());
}
}
字段的 ID 打印正确,但值始终为空。显然做错了。
请让我知道我何时何地创建字段以及如何捕获这些值 PS Am 使用 JSF 2.0、Jdeveloper、Glassfish 和/或 Weblogic Server