从 commandButton 更新 Primefaces selectOneMenu 中的选定项目
Update selected Item in Primefaces selectOneMenu from commandButton
我有一个重置按钮,想要select一个默认值
按下按钮时在 selectOneMenu 组件中。
我尝试了不同的帖子,但没有成功。
这是我的页面:
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="${pageContext.request.contextPath}/templates/default.xhtml">
<ui:define name="content">
<h:form>
<h1>Maschinenverwaltung</h1>
<p:panelGrid id="editMachinePanelGrid" style="margin-top:200px"
rendered="true">
<f:facet name="header">
<p:row>
<p:column colspan="4">Maschinenverwaltung</p:column>
</p:row>
<p:row>
<p:column colspan="4">Maschine</p:column>
</p:row>
</f:facet>
<p:row>
<p:column colspan="2">
<p:commandButton id="createModeButton2" ajax="true" type="reset"
actionListener="#{machineController.setCreateMode('true')}"
value="Neuanlage" update="machineName, deleteMachine" onclick="PF('machineSelector').selectItem(id='noMachine')">
</p:commandButton>
</p:column>
<p:column colspan="2">
<p:spacer></p:spacer>
</p:column>
</p:row>
<p:row></p:row>
<p:row>
<p:column colspan="2">
<p:selectOneMenu id="machineSelector"
value="#{machineController.currentMachine}" required="true"
var="m" effect="puff" converter="MachineConverter">
<f:selectItem itemLabel="Maschine auswählen" itemValue="" id="noMachine"/>
<f:selectItems value="#{machineController.allMachines}"
var="machine" itemLabel="#{machine.name}" itemValue="#{machine}" />
<p:column>
#{m.name}
</p:column>
<p:ajax listener="#{machineController.machineSelected}"
update="machineName">
</p:ajax>
</p:selectOneMenu>
</p:column>
<p:column colspan="2"
rendered="#{machineController.deleteMachineDisabled()}">
<p:spacer></p:spacer>
</p:column>
<p:column rendered="#{!machineController.deleteMachineDisabled()}">
<p:commandButton id="deleteMachine"
action="#{machineController.deleteCurrentMachine()}"
value="löschen"
disabled="#{machineController.deleteMachineDisabled()}"
rendered="#{!machineController.deleteMachineDisabled()}" />
</p:column>
</p:row>
<p:row>
<p:column colspan="2">Maschinenbezeichnung: </p:column>
<p:column colspan="2">
<p:inputText value="#{machineController.currentMachine.name}"
id="machineName"></p:inputText>
</p:column>
</p:row>
<p:row>
<p:column colspan="2">
<p:commandButton value="Speichern" partialSubmit="true"
process="editMachinePanelGrid"
action="#{machineController.saveMachine()}"></p:commandButton>
</p:column>
<p:column colspan="2">
<p:spacer></p:spacer>
</p:column>
</p:row>
</p:panelGrid>
<h:messages id="messages" />
</h:form>
</ui:define>
<ui:define name="title">Maschinenverwaltung</ui:define>
</ui:composition>
我知道,我必须使用 selectValue() 方法,但不知道
如何将参数寻址到 select 值:
<f:selectItem itemLabel="Maschine auswählen" itemValue="" id="noMachine"/>
我正在使用 Primefaces 5.1
此致
黑子
要在客户端重置p:selectOneMenu
,您可以使用客户端API:
首先像这样为您的菜单设置一个小部件名称:
<p:selectOneMenu widgetVar="wv" ... />
现在您可以通过客户端API轻松访问和设置菜单的值:
<p:commandButton
onclick="PF('wv').selectValue('');"
/>
请注意,selectValue
方法中的给定值应该是由 select 项目的 itemValue
属性定义的值。由于在您的情况下它是空的 (itemValue=""
),您可以将空字符串 ''
作为值传递,如上所示。
无关:
我想您的 select 项目应该设置属性 noSelectionOption='true'
而不是(仅)将项目值设置为空字符串。
我有一个重置按钮,想要select一个默认值 按下按钮时在 selectOneMenu 组件中。
我尝试了不同的帖子,但没有成功。
这是我的页面:
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="${pageContext.request.contextPath}/templates/default.xhtml">
<ui:define name="content">
<h:form>
<h1>Maschinenverwaltung</h1>
<p:panelGrid id="editMachinePanelGrid" style="margin-top:200px"
rendered="true">
<f:facet name="header">
<p:row>
<p:column colspan="4">Maschinenverwaltung</p:column>
</p:row>
<p:row>
<p:column colspan="4">Maschine</p:column>
</p:row>
</f:facet>
<p:row>
<p:column colspan="2">
<p:commandButton id="createModeButton2" ajax="true" type="reset"
actionListener="#{machineController.setCreateMode('true')}"
value="Neuanlage" update="machineName, deleteMachine" onclick="PF('machineSelector').selectItem(id='noMachine')">
</p:commandButton>
</p:column>
<p:column colspan="2">
<p:spacer></p:spacer>
</p:column>
</p:row>
<p:row></p:row>
<p:row>
<p:column colspan="2">
<p:selectOneMenu id="machineSelector"
value="#{machineController.currentMachine}" required="true"
var="m" effect="puff" converter="MachineConverter">
<f:selectItem itemLabel="Maschine auswählen" itemValue="" id="noMachine"/>
<f:selectItems value="#{machineController.allMachines}"
var="machine" itemLabel="#{machine.name}" itemValue="#{machine}" />
<p:column>
#{m.name}
</p:column>
<p:ajax listener="#{machineController.machineSelected}"
update="machineName">
</p:ajax>
</p:selectOneMenu>
</p:column>
<p:column colspan="2"
rendered="#{machineController.deleteMachineDisabled()}">
<p:spacer></p:spacer>
</p:column>
<p:column rendered="#{!machineController.deleteMachineDisabled()}">
<p:commandButton id="deleteMachine"
action="#{machineController.deleteCurrentMachine()}"
value="löschen"
disabled="#{machineController.deleteMachineDisabled()}"
rendered="#{!machineController.deleteMachineDisabled()}" />
</p:column>
</p:row>
<p:row>
<p:column colspan="2">Maschinenbezeichnung: </p:column>
<p:column colspan="2">
<p:inputText value="#{machineController.currentMachine.name}"
id="machineName"></p:inputText>
</p:column>
</p:row>
<p:row>
<p:column colspan="2">
<p:commandButton value="Speichern" partialSubmit="true"
process="editMachinePanelGrid"
action="#{machineController.saveMachine()}"></p:commandButton>
</p:column>
<p:column colspan="2">
<p:spacer></p:spacer>
</p:column>
</p:row>
</p:panelGrid>
<h:messages id="messages" />
</h:form>
</ui:define>
<ui:define name="title">Maschinenverwaltung</ui:define>
</ui:composition>
我知道,我必须使用 selectValue() 方法,但不知道 如何将参数寻址到 select 值:
<f:selectItem itemLabel="Maschine auswählen" itemValue="" id="noMachine"/>
我正在使用 Primefaces 5.1
此致
黑子
要在客户端重置p:selectOneMenu
,您可以使用客户端API:
首先像这样为您的菜单设置一个小部件名称:
<p:selectOneMenu widgetVar="wv" ... />
现在您可以通过客户端API轻松访问和设置菜单的值:
<p:commandButton
onclick="PF('wv').selectValue('');"
/>
请注意,selectValue
方法中的给定值应该是由 select 项目的 itemValue
属性定义的值。由于在您的情况下它是空的 (itemValue=""
),您可以将空字符串 ''
作为值传递,如上所示。
无关:
我想您的 select 项目应该设置属性 noSelectionOption='true'
而不是(仅)将项目值设置为空字符串。