当前位置: 首页 > 知识库问答 >
问题:

将值直接绑定到JSF selectItem,不带p: selectManyCheckbox值

公羊新
2023-03-14

所以是这样的。

MyMb:

@Named("MyMb")
@SessionScoped
public class MySuperCoolMb implements Serializable {
    //Tons of attributes

    private List<ListModelOne> lmo = new ArrayList();

    //Tons of methods
}

Outter型号:

public class ListModelOne {

    private coolObject object;
    private List<ReadWrite> permissions;

    //init()
    //setters-getters

}

内部模型,这是需要直接绑定到屏幕上的选择项的模型

public class ReadWrite {

    private String accessItem;
    private boolean read = false;
    private boolean write = false;
    //Somewhere in my code i change this from true/false depending
    //what i need and they do change in title in xhtml.
    //setters-getters
}

和我的xhtml:

<h3>Cool Title</h3>
<p:accordionPanel value="#{MyMb.lmo}" var="modelOne">
    <p:tab title="#{modelOne.coolObject.ObjectName}">
    <h3>Cool Inner Title</h3>
        <ui:repeat value="#{modelOne.permissions}" var="readWrite">
            <h:panelGrid>
            <h:outputText value="#{readWrite.accessItem}"/>
                <!-- selectManyCheckbox has no value attribute because i don't need/have a list/collection to bind it -->
                <p:selectManyCheckbox>
                    <f:selectItem itemLabel="Read" itemValue="#{readWrite.read}" title="This is set to #{readWrite.read}"/>
                    <f:selectItem itemLabel="Write" itemValue="#{readWrite.write}" title="This is set to #{readWrite.write}"/>
                </p:selectManyCheckbox>
            </h:panelGrid>
        </ui:repeat>
    </p:tab>
</p:accordionPanel>

除了复选框(selectItem)之外,一切都正常,它们可以直接绑定到类的属性并忽略p的值:selectManyCheckBox吗?java上的一切都很好,我已经调试过了,值是正确的,它们甚至在f:selectItem的“title”属性上打印OK(有些是真的,有些是假的)

PS:我也不明白ItemLabel,label,ItemValue,Value之间的区别

共有2个答案

从景曜
2023-03-14

itemtag和ItemValue的区别在于itemtag是显示的标签,ItemValue是给定选择的值

史逸春
2023-03-14

对使用两个<代码>

否则我会提出这样的代码:

<h:panelGrid>
    <h:outputText value="#{readWrite.accessItem}"/>
    <p:selectBooleanCheckbox value="Read" itemLabel="#{readWrite.read}" />
    <p:selectBooleanCheckbox value="Write" itemLabel="#{readWrite.write}" />
</h:panelGrid>

看看这个:http://www.primefaces.org/showcase/ui/input/booleanCheckbox.xhtml

如果您想动态生成selectOptions(如复选框或下拉菜单中的选项等),则使用ItemValue和ItemLabel。示例:

// Java-class...
@Named(
public enum SelectOption(){
    Max, Oliver, John;
}

// In bean...
private List<SelectOption> fornames; // with setter & getter

// In xhtml...
<p:selectManyCheckbox value="#{bean.fornames}">
    <f:selectItems value="#{bean.fornames.values()}" var="forname" 
        itemValue="#{forname}" itemLabel="#{forname.toString()}" />
</p:selectManyCheckbox>

解释:bean中的List将获取所有选定的项目。f: selectItems-tag从枚举中获取所有可能的选项(您可以交出任何集合),并遍历集合中的每个“forname”对象。在这种情况下,itemValue表示自己,因为我们有一个要保存它的对象列表,对于标签,我们调用toString-Method。

我希望这是可以理解的解释。

 类似资料:
  • 如何将MVVM值绑定到dropdownlist?下面的输入元素运行良好

  • 我有一个如上所述的下拉列表,并希望将所选值绑定到模型的字段(类型为) 但是,无论我选择哪个项目,字段始终为空!它甚至不是可空类型

  • 本文向大家介绍Laravel 将接口绑定到实现,包括了Laravel 将接口绑定到实现的使用技巧和注意事项,需要的朋友参考一下 示例 在服务提供者register方法中,我们可以将接口绑定到实现: 从现在开始,每次应用程序需要的实例时UserRepositoryInterface,Laravel都会自动注入的新实例EloquentUserRepository:            

  • 是否有可能强制XJC不生成映射到键值对转换列表? 当我接受Jaxb注释类时

  • 我有一个Spring Boot服务,它为POST请求正文使用自定义POJO类。当客户端将其中一个字段传递为null时,我希望该值设置为0。 由以下控制器使用: Spring boot将为我处理从JSON到的数据绑定,但是每当作为null传递时,我希望它保留0。有没有正确的方法来做到这一点,或者我必须自己解析类并设置值?目前,如果客户端在其请求JSON中没有传递此字段,它将保留默认值,但是,我希望即

  • 问题内容: 我目前正在使用 属性启动Java VM,以便可以通过JConsole连接到Java VM 进行管理和监视。不幸的是,它监听计算机上的所有接口(IP地址)。 在我们的环境中,通常情况下,一台机器上同时运行多个Java VM。尽管可以告诉JMX侦听不同的TCP端口(使用),但是最好让JMX使用标准的JMX端口并仅绑定到特定的IP地址(而不是所有IP地址)。 这将使查找通过JConsole连