我是JSF和Primefaces的新手。 我正在构建一个xhtml页面,其中我有两个primeface的selectonemenu。我想启用或禁用第二个selectonemenu取决于用户在第一个selectonemenu中选择的值。 为了启用/禁用我在页面中编写了Java Script,因为我想在客户端执行它,但我不知道如何在primefaces组件中调用java脚本函数。
代码示例
<h:head>
<style type="text/css">
.ui-widget,.ui-widget .ui-widget {
font-size: 12px !important;
}
</style>
<script>
function disableOneMenu() {
alert("In Disable One Menu Function...");
var clickedGroup = document.getElementById('groupOneMenu').value;
alert("Selected Value " + clickedGroup);
if (clickedGroup == "Designation") {
document.getElementById('designation').disabled = true;
alert("Location One Menu Disabled...");
}
}
</script>
<link type="text/css" rel="stylesheet"
href="#{request.contextPath}/themes/redmond/skin.css" />
</h:head>
<h:body>
<h:form>
<p:layout fullPage="true">
<p:layoutUnit position="north" size="30"
header="HCV : Peer Group Analysis" resizable="true">
</p:layoutUnit>
<p:layoutUnit id="contentLayout" position="west" size="200">
<h:panelGrid columns="2">
<h:outputText value="Analyse for values of attribute: " />
<p:selectOneMenu id="groupOneMenu" value="#{userInput.groupAttr}"
style="font-size:18;font-weight:bold;color:blue;width:100">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{userInput.groupAttrList}" />
<p:ajax event="valueChange" actionListener="disableOneMenu" />
</p:selectOneMenu>
<h:outputText value="Designation: " />
<p:selectOneMenu id="designatinoOneMenu"
value="#{userInput.designation}"
style="font-size:18;font-weight:bold;color:blue;width:100">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{userInput.designationList}" />
</p:selectOneMenu>
</h:panelGrid>
</p:layoutUnit>
</p:layout>
</h:form>
</h:body>
</html>
请帮助,我可以在xhtml页面中使用java脚本..
谢谢..
答案 0 :(得分:4)
PrimeFaces组件的JavaScript API主要是记录在案的。 DOM变量上有disable()
和enable()
个方法。
您需要使用widgetVar
属性:
<p:selectOneMenu id="myMenu" widgetVar="myMenuWidget" ... />
你可以在JavaScript中调用:
myMenuWidget.disable();
widgetVar
必须与ID不同! IE对ids和全局JS变量使用相同的命名空间(而不是FireFox)。
答案 1 :(得分:1)
您可以使用disabled
的{{1}}属性执行相同操作。你不需要使用java脚本。
<h:selectOneMenu>
和Bean可以写成:
<h:body>
<h:form>
<h:outputText value="#{test.visible}"/>
<h:selectOneMenu valueChangeListener="#{test.valuChangeHandler}" onchange="submit()" immediate="true">
<f:selectItems value="#{test.opList}"/>
</h:selectOneMenu>
<h:selectOneMenu disabled="#{!test.visible}">
<f:selectItems value="#{test.testList}"/>
</h:selectOneMenu>
</h:form>
</h:body>
看看这是否有帮助!
答案 2 :(得分:0)
<script>
function disableOneMenu() {
PF('designatinoOneMenuWV').disabled();
}
</script>
<p:selectOneMenu id="groupOneMenu" value="#{userInput.groupAttr}"
style="font-size:18;font-weight:bold;color:blue;width:100" onchange="disableOneMenu()">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{userInput.groupAttrList}" />
</p:selectOneMenu>
<p:selectOneMenu id="designatinoOneMenu" widgetVar="designatinoOneMenuWV"
value="#{userInput.designation}" style="font-size:18;font-weight:bold;color:blue;width:100">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{userInput.designationList}" />
</p:selectOneMenu>