我在弹出窗口
中有一个弹出窗口,我有一个表单<h:form id="vpmoForm">
在这个里面我有一个数据表<p:dataTable id="reqTypeDtbl">
在该数据表中,我有一个<h:inputText id="except" >
,我正在基于条件渲染。在这里,<h:inputText id="except" >
应该基于同一数据表中
另一列中 ajax 事件<h:selectOneMenu>
其他组件进行渲染
我在支持豆中得到了条件,但是如何更新<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:selectOneMenu>
渲染<h:inputText>
,并且我想从支持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.
如果组件未渲染,您将无法更新它(据我所知)。
看看你是否可以把它放在一个容器里:
<p:outputPanel id="txt">
<p:inputText value="#{bean.value}" rendered="#{bean.condition}" />
</p:outputPanel>
<p:commandButton update="txt" value="Send" />
如果您有权从托管 Bean 访问 rowIndex,则可以执行更具体的更新
<p:outputPanel styleClass="updateMe#{index}">
<p:inputText value="#{item.name}" rendered="#{bean.condition}" />
</p:outputPanel>
从托管 Bean 更新它:
RequestContext.getCurrentInstance().update("@(.updateMe" + index + ")");