使用 jsf & Ajax 更改输入值

Change input value with jsf & Ajax

我在显示我想要的内容时遇到问题。基本上我有一个下拉列表,并且在更改下拉列表中的内容时,我想要页面的一些输入自行填写。 这是我要填写的输入之一。我在 ajax 方法上调用侦听器。 XHTML 代码:

<h:outputText value="Version" styleClass="section-label"/>
            <h:inputText id="version" value="#{contextSchemeDetailBean.contextScheme.schemeVersionId}"
                         required="true" maxlength="45"
                         requiredMessage="Please fill out 'Version' field."
                         label="Version" styleClass="section-content input-section">
                <f:validateLength maximum="45"/>
                <p:ajax listener="#{codeListBaseBean.onSelectCodeList}"/>
            </h:inputText>

Java 代码使我能够获得填充这些输入内容的良好价值 (GetBlablaFromblabla)。

JavaBean 代码:

 public void onSelectCodeList(SelectEvent event){
    setSelectedCodeListName(event.getObject().toString());
    System.out.println("Element selectionne :" + event.getObject());
    System.out.println("Agency Id correspondant :" + GetAgencyIdFromCodeListName(event.getObject().toString()));
    System.out.println("Version correspondante :" + GetVersionFromCodeListName(event.getObject().toString()));
    //System.out.println("agency id ="+agencyIdListValueRepository.findOne(GetAgencyIdFromCodeListName(event.getObject().toString())).getAgencyIdListValueId());
    //System.out.println("agency id ===="+getAgencyIdListValues());
    //setAgencyIdListValue(agencyIdListValueRepository.findOne(GetAgencyIdFromCodeListName(event.getObject().toString())));
    System.out.println("=======================================");
   }

现在我想做的是在每次更改下拉列表中选择的值时将这些值放入我的输入中。我知道这一定不难,但我不熟悉 jsf。谢谢!

我的下拉列表是这样编码的:

                <h:outputText value="Code List" styleClass="section-label"/>
            <p:autoComplete id="inputCodeList"
                            requiredMessage="Please fill out 'Code List' field."
                            styleClass="section-content input-section"
                            completeMethod="#{codeListBean.completeInput}"
                            dropdown="true" scrollHeight="220"
                            itemValue="#{codeListBaseBean.codeList.listId}">
                <p:ajax event="itemSelect" listener="#{codeListBaseBean.onSelectCodeList}"/>
            </p:autoComplete>

-S

您需要在下拉列表中使用 ajax 标记,并使用 render 更新输入文本字段的值。

<h:form id="myForm">
    <h:selectOneMenu value="#{bean.selectedVal}">
        <f:selectItems value="#{bean.someValues}"/>
        <f:ajax listener="#{bean.selectValueChanged}" render="myForm:inputToBeUpdated"/>
    </h:selectOneMenu>

    <h:inputText id="inputToBeUpdated" value="#{bean.inputTextVal}"/>
</h:form>

豆子

String selectedVal;
String inputTextVal;

void selectValueChanged() {
     //set value of the input text
     inputTextVal = "some value";
}