Javascript PrimeFaces 4.0:如何在客户端以编程方式检查SelectOneRadio
我有以下JSF代码:Javascript PrimeFaces 4.0:如何在客户端以编程方式检查SelectOneRadio,javascript,jquery,jsf,primefaces,selectoneradio,Javascript,Jquery,Jsf,Primefaces,Selectoneradio,我有以下JSF代码: <p:selectOneRadio id="contactPersonGender" value="#{myBean.contactPersonGender}"> <f:selectItems value="#{data.getGenders()}" var="gender" itemValue="#{gender}" itemLabel="#{gender.label}" /> </p:selectOneRadio> <
<p:selectOneRadio id="contactPersonGender" value="#{myBean.contactPersonGender}">
<f:selectItems value="#{data.getGenders()}" var="gender" itemValue="#{gender}" itemLabel="#{gender.label}" />
</p:selectOneRadio>
<p:commandButton onclick="copyFromContactToManager();" ajax="false" type="button" update="@form"/>
<p:selectOneRadio id="managerGender" value="#{myBean.managerGender}">
<f:selectItems value="#{data.getGenders()}" var="gender" itemValue="#{gender}" itemLabel="#{gender.label}" />
</p:selectOneRadio>
或:
它们都可以工作,但在单击我的按钮后,UI不会更新(例如,如果在contactPersonGender中选择了“男性”,在managerGender中选择了“女性”,则在单击managerGender中的“女性”按钮后似乎仍处于选中状态。但如果我将表单发送到服务器并持久化数据,managerGender的预期值为“MALE”)。您正试图完成一项简单的工作,但您拥有的代码并不相关。你不需要任何JS来做这件事 看看我在这里提供的示例 XHTML代码 性别类别枚举 现在,如果您在联系人中选择男性,在经理中选择女性,并且如果您按下按钮,则经理将是女性。用户界面将被更新
您到底想在这里做什么???为什么要将ajax设置为false。。?请尝试查看一些示例当单击“我的命令”按钮并在contactPersonGender中选中收音机0(“男性”)时,我希望managerGender也选中收音机0(“男性”)。当收音机1(“女性”)被检查时,我希望maangerGender也检查收音机1。在我的页面上,您可以编辑公司联系人及其经理。当经理与联系人是同一个人时,我会提供一个命令按钮,将所有联系人属性复制到经理(客户端),例如姓名、电子邮件地址和性别(这是我的问题)。我希望你能理解我的问题:-)我将为你的问题提供一个例子。我相信这会对你有所帮助。现在看看我的例子。它应该满足你的要求!好的,到目前为止谢谢你们…我以前有过这个服务器端解决方案,但我试着在客户端实现它。但我现在将使用这个解决方案,然后再浪费更多的时间在这个(对我来说)很高兴有客户端功能:-)你应该使用这个解决方案。一天结束后,您必须使用服务器,所以为什么不这样做@Makky您的代码在从数据库填充selectOneButton时帮了我很多忙@很高兴这对你有帮助
function copyFromContactToManager(){
$("input[id^='" + contactPersonGender + "']").each(function(index, element) {
if ($(element).prop("checked")) {
$("input[id^='managerGender:" + index + "']").first().click();
}
});
}
function copyFromContactToManager(){
$("input[id^='" + contactPersonGender + "']").each(function(index, element) {
$("input[id^='managerGender:" + index + "']").prop("checked", $(element).prop("checked"));
}
}
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<style media="screen" type="text/css">
.ui-widget,.ui-widget .ui-widget {
font-size: 90% !important;
}
</style>
<h:form>
<p:panel header="Contact Person">
<h:panelGrid columns="2">
<h:outputText value="Select Gender"></h:outputText>
<p:selectOneRadio id="contactPersonGender"
value="#{testBean.contactPersonGender}">
<f:selectItems value="#{testBean.genders}" var="gender"
itemLabel="#{gender.name}" />
</p:selectOneRadio>
</h:panelGrid>
</p:panel>
<p:separator></p:separator>
<p:commandButton value="Copy to Manager"
actionListener="#{testBean.copyToManager}" update="managerPanel"></p:commandButton>
<p:separator></p:separator>
<p:panel header="Manager Person" id="managerPanel">
<h:panelGrid columns="2">
<h:outputText value="Select Gender"></h:outputText>
<p:selectOneRadio id="managerGender"
value="#{testBean.managerGender}">
<f:selectItems value="#{testBean.genders}" var="gender"
itemLabel="#{gender.name}" />
</p:selectOneRadio>
</h:panelGrid>
</p:panel>
</h:form>
</h:body>
</html>
package reg.bean;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
@ManagedBean(name = "testBean")
@ViewScoped
public class TestBean {
private GENDER contactPersonGender;
private GENDER managerGender;
private GENDER[] genders;
public TestBean() {
genders = GENDER.values();
}
public void processForm(ActionEvent event) {
System.out.println("Contact person Gender " + contactPersonGender.getName());
System.out.println("Manager Gender " + managerGender.getName());
}
public void copyToManager(ActionEvent event){
this.managerGender=this.contactPersonGender;
}
public GENDER[] getGenders() {
return genders;
}
public void setGenders(GENDER[] genders) {
this.genders = genders;
}
public GENDER getContactPersonGender() {
return contactPersonGender;
}
public void setContactPersonGender(GENDER contactPersonGender) {
this.contactPersonGender = contactPersonGender;
}
public GENDER getManagerGender() {
return managerGender;
}
public void setManagerGender(GENDER managerGender) {
this.managerGender = managerGender;
}
}
package reg.bean;
public enum GENDER {
MALE("Male"), FEMALE("Female");
private String name;
GENDER(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}