重置 <f:选择项目/>

  • 本文关键字:项目 选择 重置 jsf
  • 更新时间 :
  • 英文 :


在我的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中所选值的索引,以及如何重置它,或者如果我愿意,以编程方式将其设置为另一个值?

这是一个困扰我一段时间的问题,我找不到解决方案。非常感谢您的帮助

选择的值为#{index.physics}。你需要把它变成null

另一种方法是将bean置于请求或视图作用域中。我不认为会话作用域是适合这个目的的作用域。参见如何选择正确的bean作用域?

相关内容

  • 没有找到相关文章

最新更新