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

JSF基于selectone菜单显示PanelGrid行/项

弘柏
2023-03-14

我有一个提交表单,并希望显示一行,如果选择的关系是儿子或女儿,他们输入生日。

<h:form id="form2">
<p:panel header="Add a Non-Member">
<p:panelGrid>
    <p:row>
        <p:column>
            <h:outputLabel for="fname" value="First Name: " />
        </p:column>
        <p:column>
            <p:inputText id="fname" required="true"
                value="#{memberManager.newNonMember.first_name}" >
                <p:ajax update="@form" />
            </p:inputText>
        </p:column>
        <p:column>
            <p:message for="fname"></p:message>
        </p:column>
    </p:row>

    <p:row>
        <p:column>
            <h:outputLabel for="lname" value="Last Name: " />
        </p:column>
        <p:column>
            <p:inputText id="lname" required="true" 
                value="#{memberManager.newNonMember.last_name}" >
                <p:ajax update="@form" />
            </p:inputText>
        </p:column>
        <p:column>
            <p:message for="lname"></p:message>
        </p:column>
    </p:row>

    <p:row>
        <p:column>
            <h:outputText value="Relationship: " />
        </p:column>
        <p:column>
            <p:selectOneMenu id="relationship" value="#{memberManager.newNonMember.type}" required="True"
                requiredMessage="Relationship is required for non-member">
                <f:selectItem itemLabel="Select One" itemValue="#{null}" noSelectionOption="true" />
                <f:selectItems value="#{memberManager.relationTypes}" var="type" itemValue="#{type}" itemLabel="#{type.label}" />
                <p:ajax update="@form" />
            </p:selectOneMenu>
        </p:column>
        <p:column>
            <p:message for="relationship" />
        </p:column>
    </p:row>

    <p:row id="birthrow">
        <p:column>
            <h:outputLabel for="nm_birth_date" value="#{memberManager.newNonMember.type.label}'s Birthdate: "
                rendered="#{memberManager.newNonMember.type.label == 'Son'|| memberManager.newNonMember.type.label == 'Daughter'}" />
        </p:column>
        <p:column>
            <p:calendar id="nm_birth_date" showOn="button" navigator="true" value="#{memberManager.newNonMember.birth_date}"
                rendered="#{memberManager.newNonMember.type.label == 'Son'|| memberManager.newNonMember.type.label == 'Daughter'}"
                required="#{memberManager.newNonMember.type.label == 'Son'|| memberManager.newNonMember.type.label == 'Daughter'}"
                pattern="MM/dd/yyyy" mask="true"
                requiredMessage="Your #{memberManager.newNonMember.type.label}'s Birthdate is required" />

        </p:column>
        <p:column>
            <p:message for="nm_birth_date"></p:message>
        </p:column>
    </p:row>

</p:panelGrid>
<br />

<p:commandButton value="Add" action="#{memberManager.addAction}" ajax="false" />
</p:panel>

</h:form>

>

  • 最初我没有使用p:row或p:column,而是使用面板网格上的columns属性。但是基于这个如何通过BalusC呈现 ,我知道我需要一个包装器组件,这就是为什么我使用p:row路由的原因。

    但是,有没有一种更干净的方法可以不在文本输入上使用所有的p:rows和额外的ajax呢?

  • 共有1个答案

    归鸿朗
    2023-03-14

    您可以将单个单元格包装在 中,而不需要所有的 冗长。

    <h:panelGroup id="birthdateLabel">
        <h:outputLabel ... />
    </h:panelGroup>
    <h:panelGroup id="birthdateInput">
        <p:calendar ... />
    </h:panelGroup>
    <p:message ... />
    

    要更新它们,只需使用update=“birthdateLabel birthdateInput”

     类似资料:
    • 我试图通过从展示中获取代码来使primeface元素出现在我的页面上,菜单在一些修改后运行良好,但selectonemenu拒绝出现。 它在布局单元中没有显示任何内容。这是我的xhtml代码:

    • 在我的JSF应用程序与Primeface 5.3中,我有一个SseltOneMenu,其中包含SseltItemGroup条目,其中条目需要翻译。 我的XHTML代码片段: 这里我使用进行翻译,但始终会显示Bean类中生成的标签,而不会显示我的资源包中已翻译的字符串! 我的Bean类代码片段: 它也不工作,如果我不使用像这样的选择对象组: 使用这样的枚举工作: 捆绑包属性: 我到底做错了什么?

    • 问题内容: 我是iOS的新手。我正在尝试显示一个弹出菜单,但是我却无法显示菜单。请帮忙。这是我的代码: 请帮助我显示弹出菜单。 先感谢您。 问题答案:

    • 我的应用程序有问题。。。溢出菜单不可见!我可以点击手机的右上角,菜单项就会显示出来,但这三个点并没有显示出来。 这是我的xml: Java代码: 我在StackOverflow上尝试了其他解决方案,但它们似乎都不起作用。我试过在两部手机上运行这个应用程序,都是Android版本 更新:我尝试在应用程序中添加导航抽屉。再次,当我点击抽屉按钮应该在的一侧时,菜单会显示出来,但按钮不可见。。。 更新2:

    • 我正在用LibGDX编写一个处理背景纹理的新程序,并且刚刚开始实现屏幕。但当我测试它时,它只显示一个给定分辨率的黑屏。在实现的游戏类中,我使用setScreen(screen)-方法调用screen。 下面是代码: }

    • ap.showActionSheet(OPTION, CALLBACK) 显示操作菜单。 OPTION 参数说明 名称 类型 必填 描述 title String 否 菜单标题 items String Array 是 菜单按钮的文字数组 cancelButtonText String 否 取消按钮文案,默认为「取消」 CALLBACK 参数说明 点击菜单按钮时调用 名称 类型 描述 index