如何将selectItems设置为给定的String位置



我试图用JSF解决一些问题,但我运气不好。我会尝试恢复我的代码,因为我不认为这里的很多代码可以帮助你解决这个问题,所以我会尝试更好地描述我的问题。

现在我有一个String,它存储三个移位:matutinal、vespertine和night。在我的体系结构中,我需要myStringArray[0] = 'matutinal'myStringArray[1] = 'vespertine'myStringArray[3] = 'nightly'

我在我的应用程序中使用JSF 2.0和Primefaces,还有一些omnifaces。

以下是我的JSF代码:

<p:selectManyCheckbox value="#{escolaMBean.turnos}">
    <f:selectItems value="#{escolaMBean.listaTodosTurnos}" var="turno" itemValue="#{turno.nome}" itemLabel="#{turno.nome}" />                                       
</p:selectManyCheckbox>

escolaMBean中的注释:

// Stores the selected "Turnos" (This means "shift" in English)
String[] turnos = new String[3];
// Stores all the "Turnos" received from DB
ArrayList<Turno> listaTodosTurnos = <myControl.myDbRequest()>
/*
* Turno have a simple ID and Name, in DB we have 3 "Turnos": Matutinal, Vespertine, Nightly
* In this MBean I have all getters and setters - and in "Turno" class too.
* When I set one string in turnos[n], this set the right value
*/

那么,基于这些,如果选择了matutinal复选框,我如何选择turnos[0],如果选择vespertine复选框,则如何选择turns1,如果选择nightly复选框,如何选择turnos[2]?现在这不起作用,因为如果我先选择Nightly,位置turns[0]将等于"Nightly"。

我该如何解决这些问题?

通过标准JSF方法,您想要的是不可能的。HTML的工作方式限制了您。HTML <input type="checkbox">只提交有关选定值的信息,而不提交有关未选定值的内容。JSF只是HTML/HTTP和Javabean模型之间的信使。所有JSF检索的都是选定值的集合。它不会检索未选定值的集合。

您需要根据自己选择的值将未选择的值与可用值相交。

这里有一个启动示例,假设你有一个

private List<String> selectedItems; // <p:selectManyCheckbox value>
private List<Item> availableItems; // <f:selectItems value>
private String[] orderedSelectedItems; // Selected items ordered by index

那么这应该做,例如在提交表单后的动作侦听器中:

orderedSelectedItems = new String[availableItems.size()];
int i = 0;
for (Item item : availableItems) {
    String name = item.getName();
    orderedSelectedItems[i++] = selectedItems.contains(name) ? name : null;
}

相关内容

  • 没有找到相关文章

最新更新