我的代码:
<%@ 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(每次单击)。 我应该添加什么来实现呢?
答案 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);
}
}