【问题标题】:Make div tag visible using java-script or Ajax render option in JSF使用 JSF 中的 java-script 或 Ajax 渲染选项使 div 标签可见
【发布时间】:2026-02-06 12:30:01
【问题描述】:

目前我在suggestioinField组件中添加ajax渲染后遇到div组件的问题,div显示更改为none。如何使其页面保持在同一页面中,即使在渲染到动作之后也是如此。

这是我用来隐藏和显示分界线的javascript函数

function AddShow(id){
  document.getElementById(id).style.display="block";}

添加按钮以显示 div 标签:

<h:commandButton type="button" id="cmdadd1" value="#{message.btn__list_add}" onclick="AddShow('Add')" immediate="true"/>

JSF Page-Div 内容

<div id="Add" display:none;"> 
  <h:outputLabel value="#{message.label_listA }" />                 
  <o:suggestionField id="addvalA"  value="#{MainAction.CodeAdd}" customValueAllowed="false"
   manualListOpeningAllowed="true"  autoComplete="true" suggestionMinChars="1   onchange="O$.ajax.request(this,event,{ execute: 'frmList: addvalA ', listener: ‘MainAction.doSelectCodeAdd', render: 'frmList' })"onkeydown="O$.ajax.request(this,event,{listener: 'MainAction.doResetA'})" onblur="O$.ajax.request(this,event,{render:'frmList'})" ><o:dropDownItems value="#{MainAction.doCodeAdd}"/> </o:suggestionField>                            

   <h:commandButton  id="cmdAddConfirm"  value="#{message.btn_create}"  >
       <f:ajax execute="@form" render="@form" listener="#{MainAction.doConfirmAdd}"/>                           
  </h:commandButton>


  </div> 

有什么办法吗?

【问题讨论】:

    标签: javascript html jsf-2


    【解决方案1】:

    将以下内容添加到您的 js 文件中

    jQuery(window).load(function () {
        jsf.ajax.addOnEvent(function (data) {
            if (data.status === "success") {
                if(data.source.id  === "cmdAddConfirm"){
                    AddShow('Add');
                }
            }
        });
    });
    

    简短说明:

    在每个 ajax 调用中,jsf.ajax.addOnEvent 将被调用,只有在它成功结束后并且只有当调用是从 cmdAddConfirm 按钮进行时,你才会调用你的 js 函数来将显示设置为阻止

    p>

    【讨论】: