我弹出窗口中有一个弹出窗口我在其中有一个<h:form id="vpmoForm">
形式我有一个数据表<p:dataTable id="reqTypeDtbl">
并且在数据表中我有一个<h:inputText id="except" >
我正在渲染基于条件。
这里<h:inputText id="except" >
应该基于同一数据表中另一列中的另一个组件<h:selectOneMenu>
ajax事件进行渲染
我在支持bean中得到了条件但是如何更新<h:inputText id="except" >
以在数据表中呈现它。
我使用的代码如下所示
<p:dataTable id="reqTypeDtbl" scrollable="true" scrollHeight="150"
value="#{Bean.ReqDetailslsList}"
rowIndexVar="index" var="eachrow">
<h:selectOneMenu id="tssreq" value="#{vpmoReqDtlRow.tssReqId}"
rendered="#{Bean.vpmoEditFlag == true}">
<f:selectItems value="#{Bean.vpmoTSSList}"
var="tss" itemLabel="#{tss.label}" itemValue="#{tss.value}" />
<p:ajax listener="#{Bean.getTssId}"
execute="@this" partialSubmit="true" />
<f:param name="rowidno" value="#{index}" required="true" />
</h:selectOneMenu>
<h:inputText value="#{eachrow.exceptionNum}" id="except" style="width:100%" rendered="#{Bean.EditFlag == true and eachrow.tssReqId eq 'Y'}" />
</p:dataTable >
如上所述,我想在调用其ajax事件时基于另一个组件<h:inputText>
呈现<h:selectOneMenu>
,并且我想从支持bean启用<h:inputText>
。
这是我用于Ajax方法的代码
public void getTssId(AjaxBehaviorEvent evt) {
Map<String, String> params = FacesContext.getCurrentInstance()
.getExternalContext().getRequestParameterMap();
int index = Integer.parseInt(params.get("rowidno"));
String selected = vpmoReqDetailslsList.get(index).getTssReqId();
if (selected.equalsIgnoreCase("y")) {
vpmoReqDetailslsList.get(index).setTssReqId("Y");
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.update(":vpmoForm:reqTypeDtbl:except"); //.....I AM TRYING TO UPDATE THE UI FROM HERE
}
I am trying to find a way to update the `<h:inputText id="except" >` component from the backing bean so that it can render in the UI.<br/>
Any suggestions will be really helpful to resolve this issue.
答案 0 :(得分:0)
如果组件未呈现,您将无法更新它(据我所知)。
看看你是否可以将它放在容器中:
<p:outputPanel id="txt">
<p:inputText value="#{bean.value}" rendered="#{bean.condition}" />
</p:outputPanel>
<p:commandButton update="txt" value="Send" />
如果您可以从managedbean访问rowIndex,则可以执行更具体的更新
<p:outputPanel styleClass="updateMe#{index}">
<p:inputText value="#{item.name}" rendered="#{bean.condition}" />
</p:outputPanel>
从您的managedbean更新它:
RequestContext.getCurrentInstance().update("@(.updateMe" + index + ")");