如何点击p:commandLink时显示表单字段?附相关代码示例
实现点击PrimeFaces CommandLink后显示/启用表单字段的方法
看起来你想要点击那个带图标的命令链接后,让原本禁用的refno输入框变成可用(或者显示出来)。我来一步步帮你实现这个功能:
步骤1:在后台Bean中添加状态控制变量
首先在你的pmBean里加一个布尔变量,用来控制字段的显示/启用状态:
private boolean showRefnoField = false; // 别忘了生成Getter和Setter public boolean isShowRefnoField() { return showRefnoField; } public void setShowRefnoField(boolean showRefnoField) { this.showRefnoField = showRefnoField; }
步骤2:修改后台方法触发状态变更
在pmController的createWorkOrderFromRca方法里,添加一行代码来开启字段的显示/启用状态:
public String createWorkOrderFromRca() { // 保留你原本的业务逻辑代码 pmBean.setShowRefnoField(true); // 这行是关键,把状态设为true // 其他逻辑代码 return null; // 根据你的实际需求调整返回值 }
步骤3:更新表单字段的属性
把你原来的refno输入框的disabled属性绑定到这个变量上(如果是要从隐藏变显示,就用样式或者rendered属性):
<div class="col-md-12 Spacing" style="margin-top: 1%;"> <div class="col-md-3" style="padding-top: 7px;"> <p:outputLabel styleClass="WhiteBlue" value="Ref#" /> </div> <div class="col-md-9"> <!-- 方案1:让字段从禁用变可用 --> <p:inputText type="text" styleClass="form-control" required="false" requiredMessage="required" value="#{pmBean.addpfmworkorderhead.refno}" id="refno" disabled="#{!pmBean.showRefnoField}" /> <!-- 方案2:让字段从隐藏变显示(如果初始是隐藏的话) --> <!-- <p:inputText type="text" styleClass="form-control" required="false" requiredMessage="required" value="#{pmBean.addpfmworkorderhead.refno}" id="refno" style="#{!pmBean.showRefnoField ? 'display:none;' : ''}" /> --> </div> </div>
步骤4:确保AJAX更新包含目标字段
修改你的p:commandLink的update属性,确保它能刷新到这个refno字段。如果refno已经在AddNewEntryDialog:RcaDialog对话框里面,那只更新这个对话框ID就够;如果不在,就把refno的ID也加进去:
<p:commandLink oncomplete="PF('dlgwwv').show();" action="#{pmController.createWorkOrderFromRca}" process="@this" update="AddNewEntryDialog:RcaDialog refno" <!-- 调整这里的更新范围 --> id="rd"> <h:graphicImage name="images/AttachDetails.gif" style="margin-left: 1%;" title="Create Work Order with reference to RCA" /> </p:commandLink>
额外注意事项
- 如果用
rendered属性来控制显示,要确保更新的是这个字段的父容器(比如外层的div),因为rendered是服务器端渲染,直接更新字段ID可能不会生效。 - 测试时可以打开浏览器的开发者工具,查看AJAX请求的响应,确认后台是否正确返回了字段的更新状态。
内容的提问来源于stack exchange,提问作者Hudaibia
相关产品推荐
相关产品推荐

