jsf:生成另一个panelGrid

时间:2011-06-02 22:42:25

标签: java jsf

我的代码:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<f:view>
 <html>
  <body>
   <h:form>
<h:panelGrid columns="3" border="1" rules="all" title="This is panelGroup demo">
  <f:facet name="header">
  <h:outputText value="Submit Detail"/>
  </f:facet>
   <h:inputText/>
   <h:inputText/>
   <h:inputText/>
   <h:inputText/>
   <h:inputText/>
   <h:inputText/>
   <h:inputText/>
   <h:inputText/>
  <f:facet name="footer">
  <h:panelGroup>
   <h:outputText value="Leave Comment Here :" />
   <h:inputText/>
   <h:outputText value="Submit" />
   <h:commandButton value="SUBMIT" />
  </h:panelGroup>
  </f:facet>
</h:panelGrid> 
  </h:form>
  </body>
 </html>
</f:view>

我想放一个commandButton标签。当我单击按钮时,它应该生成另一个具有相同列数和行数的panelgrid(每次单击)。 我应该添加什么来实现呢?

1 个答案:

答案 0 :(得分:1)

您可以将panelGrid放在dataTable内,然后将其连接到包含列表的bean。然后,当您按下commandButton时,您需要做的就是向列表中添加一个元素,数据将呈现一个额外的行。以下是一些示例代码:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<f:view>
 <html>
  <body>
   <h:form>
    <h:dataTable value="#{myBean.myList}" var="myListElement" >
     <h:column>
      <!-- put your panelGrid here!! -->
     </h:column>
    </h:dataTable>
    <h:commandButton value="Add panelGrid" action="#{myBean.addToMyList}" />
   </h:form>
  </body>
 </html>
</f:view>

然后,列表中的每个元素都可用于保存要在单个panelGrid中显示的信息。

编辑:支持bean代码。

public class MyBean {
    private List<Object> myList;

    public MyBean() {
        myList = new ArrayList<Object>();
    }

    public void addToMyList() {
        myList.add(new Object());
    }

    public List<Object> getMyList() {
        return (myList);
    }
}

要理解此代码,建议您阅读dataTable herehere