提问人:Sox - 提问时间:7/10/2018 最后编辑:KukeltjeSox - 更新时间:7/16/2018 访问量:3798
使用 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
答:
2赞
DavidZ
7/10/2018
#1
您需要在下拉列表中使用 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";
}
评论
0赞
Sox -
7/10/2018
我试过了,但那不起作用,实际上,当您说“我想填写此输入”时,该代码中的时刻在哪里?
0赞
DavidZ
7/10/2018
inputText 值将与 的值 is 相同,您需要确保 inputText 的 id 与属性中的值匹配#{bean.selectedVal}
render
1赞
Sox -
7/10/2018
这就是这里的问题!<h:inputText id=“version” value=“#{contextSchemeDetailBean.contextScheme.schemeVersionId}” 意味着我将信息存储在好的地方,所以基本上我想要的是不要触摸那行并添加另一行来填充此输入
2赞
Sox -
7/10/2018
明白了,这并不完全有效,但关于使用渲染的想法让我弄清楚了!我将您的答案标记为响应。再次感谢:-)
1赞
DavidZ
7/10/2018
没问题,祝您编码愉快
评论