我的代码:
<%@ 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
放在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
s中显示的信息。
EDIT:支持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
的内容。