显示动态复选框

时间:2013-06-23 09:15:48

标签: jsf richfaces

您好我正在附加我的代码,我的问题是我从数据库中获取一个列表,我在显示器上的UI中显示只有复选框。

一旦用户选择了任何复选框,我就需要在该复选框的文本区域上进行渲染。因此checkbox和textarea将是动态的。

我已经在bean中编写了一些代码但是这对第一个对象起作用它工作正常但是对于剩下的对象它不起作用请帮助解决问题

Bean代码:

public void addSharedMessage()
{   
    for(DocumentTypeDTO documentTypeDTO1 : shareGovtAgencyList)
{
    System.out.println(documentTypeDTO1.getSelected());
    if( documentTypeDTO1.getSelected())
        {
        this.setSharedMessageRendered(true);
        setSharedMessageRendered(true);             
    } else {
        this.setSharedMessageRendered(false);
    }
}
}

XHTML代码:

<rich:dataTable width="100%" id="searchResult" border="0" rowKeyVar="
    value="#{myBean.sharedList}" var="item"
    headerClass="head" cellpadding="2" 
    rowClasses="odd,even" cellspacing="0" bgcolor="#FFFFFF">

    <rich:column  style="text-align:center; background-color:#FFFFFF" width="1%">
     <h:selectBooleanCheckbox  id="khudh" value="#{item.selected}" immediate="true" >
         <a4j:support event="onchange" action="#{myeBean.addSharedMessage}"                              reRender="committeemenbersname" />
         </h:selectBooleanCheckbox>                            
    </rich:column>
    <rich:column  style="background-color:#FFFFFF" id="committeemenbersname" >
     <h:outputText value="#{item.documentName}" />
     <rich:separator lineType="none" />
         <h:inputTextarea id="shareProfileComment" rows="2" cols="45"  
              rendered="#{myBean.isSharedMessageRendered}"  >
             <f:validateLength maximum="200" />
         </h:inputTextarea> 
    </rich:column>
 </rich:dataTable>

1 个答案:

答案 0 :(得分:0)

不要每次都迭代所有值。你做的任何一个值都是真的,剩下的都应该是假的。我认为这是问题所在。

试试这个,

public String addSharedMessageAction()
    {
        DocumentTypeDTO documentTypeDTO1 = shareGovtAgencyList.get(dataTableIndex);
        System.out.println(documentTypeDTO1.getSelected());
        if (documentTypeDTO1.isSelected())
        {
            documentTypeDTO1.setSharedMessageRendered(true);
        }
        else
        {
            documentTypeDTO1.setSharedMessageRendered(false);
        }
        return null;
    }

XHTML代码:

   <rich:dataTable id="dataTableID"
                 value="#{Sample.sampleList}"
                 rendered="#{Sample.sampleDataTableRendered}"
                 var="sampleBean"
                 width="600"
                 rowKeyVar="currentIndex">

                 <f:facet name="header">
                   <rich:columnGroup>
                       <rich:column>
                           <h:outputText value="select"/>
                       </rich:column>

                       <rich:column>
                           <h:outputText value="Comment"/>
                       </rich:column>
                    </rich:columnGroup>
                 </f:facet>

                 <rich:column >
                    <h:selectBooleanCheckbox id="checkboxId" 
                         value="#{sampleBean.selected}">
                         <a4j:support action="#{Sample.addSharedMessageAction}"
                              event="onclick" reRender="dataTableID">
                                <a4j:actionparam name="actionParemId"
                                       value="#{currentIndex}"
                                       assignTo="#{Sample.dataTableIndex}"/>
                         </a4j:support>
                    </h:selectBooleanCheckbox>
                </rich:column>

                <rich:column >
                     <h:inputTextarea value="#{sampleBean.comment}"
                                rendered="#{sampleBean.isSharedMessageRendered}"/>
                </rich:column>

        </rich:dataTable>