在我的 JSF 应用程序中,我有 h:selectOneMenu 和 h:selectOneListBox 标记可以正常工作,但我不知道如何将它们重置回第一个条目,这是默认设置。
我的 xhtml 代码示例如下:
<h:selectOneMenu id="physmenu" value="#{index.physics}" style="height:25px; width:180px;">
<f:selectItems value="#{index.physicsMap}"/>
</h:selectOneMenu>
对应的bean的一部分是:
@ManagedBean(name="index")
@SessionScoped
public class MyIndexBean implements Serializable {
// Other private variables
private String itemValue;
private String itemLabel;
private String physics;
Map<String,String> physicsMap = new LinkedHashMap<String,String>();
private void initPhysics() {
// Loop through data read from an input file
// Get itemValue and itemLabel for each line of input read
physicsMap.put(itemLabel, itemValue); // Store these in physicsMap each time in the loop
// Other code
}
}
public Map<String,String> getPhysicsMap() {
return physicsMap;
}
// ----- Getter and setter for physics for the index page -----
public String getPhysics() {
return physics;
}
public void setPhysics(String physics) {
this.physics = physics;
}
public void resetPhysics(ActionEvent event) {
physicsMap.clear();
}
}
同样,对于 h:selectOneListBox,以类似的方式,在我的 Java 代码中的几个地方,我有一个我创建的对象数组,而不是 LinkedHashMap。
当我从文件中读取数据时,我想将它保存在内存中并以某种方式重置 JSF 用来指定哪个是选定项的指针,但我不知道如何访问该指针。最后的 ActionEvent 方法只是清除 Map,所以用处不大。
首次访问页面时,会显示第一个菜单项,完全符合我的要求,但是如果更改了它,则单击提交按钮,然后当我重新访问该页面时,仍会显示新选择的值,我看不到如何重置它到第一个菜单项。JSF 如何跟踪指向页面上显示的 Map 中所选值的索引,以及如何重置它,或者如果我愿意,以编程方式将其设置为另一个值?
这是一个困扰我一段时间的问题,我找不到解决方案。非常感谢您的帮助