Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PrimeFaces 4.0:如何在客户端以编程方式检查SelectOneRadio_Javascript_Jquery_Jsf_Primefaces_Selectoneradio - Fatal编程技术网

Javascript PrimeFaces 4.0:如何在客户端以编程方式检查SelectOneRadio

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> <

我有以下JSF代码:

<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;
    }
}