Java Server Faces

编程入门 行业动态 更新时间:2024-10-26 04:25:53
Java Server Faces - 如何在网页上更新显示列表的值[重复](Java Server Faces - How to update value of displayed List on web page [duplicate])

这个问题在这里已有答案:

如何动态添加JSF组件 3个答案

我正在为请求名称和值做动态文本框但是当我单击我的.xhtml文件上的添加按钮时,它总是大小为1.我想获得List的当前大小然后添加另一个空白对象。

HomepageBean.java

@ManagedBean public class HomepageBean { private String url; private String portNumber; private List<RequestParameter> requestParameterList = new ArrayList<>(); public List<RequestParameter> getRequestParameterList() { return requestParameterList; } public void setRequestParameterList(List<RequestParameter> requestParameterList) { this.requestParameterList = requestParameterList; } /** * @return the url */ public String getUrl() { return url; } /** * @param url the url to set */ public void setUrl(String url) { this.url = url; } /** * @return the portNumber */ public String getPortNumber() { return portNumber; } /** * @param portNumber the portNumber to set */ public void setPortNumber(String portNumber) { this.portNumber = portNumber; } public void addRequestParameter(List<RequestParameter> requestParameters){ System.out.println("size: " + requestParameterList.size()); RequestParameter requestParameter = new RequestParameter(); requestParameters.add(requestParameter); System.out.println("size: " + requestParameterList.size()); this.setRequestParameterList(requestParameters); } public void removeRequestParameter(RequestParameter requestParameter){ requestParameterList.remove(requestParameter); }

}

这是我的.xhtml文件,它从bean中迭代List的值

的index.xhtml

<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">> <h:head> <h:outputStylesheet library="css" name="/WEB-INF/homepageStyle.css"/> <title>Facelet Title</title> </h:head> <h:body> <h:form> <h:outputLabel style="font-weight: bold" value="Platform V2 Emulator"/> <br /> <h:panelGrid styleClass="panelGridCenter" columns="4" cellpadding="5"> <h:outputLabel for="url" value="Url:" style="font-weight:bold" /> <p:inputText id="url" value="#{homepageBean.url}" /> <p:commandButton value="Submit" update="urlString" icon="ui-icon-check" /> <h:outputText id="urlString" value="#{homepageBean.url}" /> </h:panelGrid> <h:panelGrid styleClass="panelGridCenter" columns="4" cellpadding="5"> <h:outputLabel for="portNumber" style="font-weight: bold" value="Port:"/> <p:inputText id="portNumber" value="#{homepageBean.portNumber}"/> <p:commandButton value="Submit" update="portNumberString" icon="ui-icon-check" /> <h:outputText id="portNumberString" value="#{homepageBean.portNumber}" /> </h:panelGrid> <h:panelGrid columns="6" cellpadding="5"> <h:outputLabel for="parameters" style="font-weight: bold" value="Request Parameters:"/> </h:panelGrid> <h:panelGrid id="parametersGrid" columns="3" cellpadding="5"> <c:forEach items="#{homepageBean.requestParameterList}" var="parameter"> <h:inputText value="#{parameter.key}"/> <h:inputText value="#{parameter.value}"/> <h:commandButton action="#{homepageBean.removeRequestParameter(parameter)}" value="Remove"/> </c:forEach> </h:panelGrid> <h:panelGrid columns="1" cellpadding="5"> <p:commandButton actionListener="#{homepageBean.addRequestParameter(homepageBean.requestParameterList)}" update="parametersGrid" value="Add"/> </h:panelGrid> <h:link outcome="welcomePrimefaces" value="Primefaces welcome page" /> </h:form> </h:body>

This question already has an answer here:

How to dynamically add JSF components 3 answers

I am doing dynamic textbox for request name and the value but when I click the add button on my .xhtml file it is always on size of 1. I want to get the current size of the List then add another blank object.

HomepageBean.java

@ManagedBean public class HomepageBean { private String url; private String portNumber; private List<RequestParameter> requestParameterList = new ArrayList<>(); public List<RequestParameter> getRequestParameterList() { return requestParameterList; } public void setRequestParameterList(List<RequestParameter> requestParameterList) { this.requestParameterList = requestParameterList; } /** * @return the url */ public String getUrl() { return url; } /** * @param url the url to set */ public void setUrl(String url) { this.url = url; } /** * @return the portNumber */ public String getPortNumber() { return portNumber; } /** * @param portNumber the portNumber to set */ public void setPortNumber(String portNumber) { this.portNumber = portNumber; } public void addRequestParameter(List<RequestParameter> requestParameters){ System.out.println("size: " + requestParameterList.size()); RequestParameter requestParameter = new RequestParameter(); requestParameters.add(requestParameter); System.out.println("size: " + requestParameterList.size()); this.setRequestParameterList(requestParameters); } public void removeRequestParameter(RequestParameter requestParameter){ requestParameterList.remove(requestParameter); }

}

and this is my .xhtml file which iterates the value of List from the bean

index.xhtml

<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">> <h:head> <h:outputStylesheet library="css" name="/WEB-INF/homepageStyle.css"/> <title>Facelet Title</title> </h:head> <h:body> <h:form> <h:outputLabel style="font-weight: bold" value="Platform V2 Emulator"/> <br /> <h:panelGrid styleClass="panelGridCenter" columns="4" cellpadding="5"> <h:outputLabel for="url" value="Url:" style="font-weight:bold" /> <p:inputText id="url" value="#{homepageBean.url}" /> <p:commandButton value="Submit" update="urlString" icon="ui-icon-check" /> <h:outputText id="urlString" value="#{homepageBean.url}" /> </h:panelGrid> <h:panelGrid styleClass="panelGridCenter" columns="4" cellpadding="5"> <h:outputLabel for="portNumber" style="font-weight: bold" value="Port:"/> <p:inputText id="portNumber" value="#{homepageBean.portNumber}"/> <p:commandButton value="Submit" update="portNumberString" icon="ui-icon-check" /> <h:outputText id="portNumberString" value="#{homepageBean.portNumber}" /> </h:panelGrid> <h:panelGrid columns="6" cellpadding="5"> <h:outputLabel for="parameters" style="font-weight: bold" value="Request Parameters:"/> </h:panelGrid> <h:panelGrid id="parametersGrid" columns="3" cellpadding="5"> <c:forEach items="#{homepageBean.requestParameterList}" var="parameter"> <h:inputText value="#{parameter.key}"/> <h:inputText value="#{parameter.value}"/> <h:commandButton action="#{homepageBean.removeRequestParameter(parameter)}" value="Remove"/> </c:forEach> </h:panelGrid> <h:panelGrid columns="1" cellpadding="5"> <p:commandButton actionListener="#{homepageBean.addRequestParameter(homepageBean.requestParameterList)}" update="parametersGrid" value="Add"/> </h:panelGrid> <h:link outcome="welcomePrimefaces" value="Primefaces welcome page" /> </h:form> </h:body>

最满意答案

好吧,我认为你的大小总是1,因为在你的addRequestParameter方法中你只添加了一个元素。 单击下一次此按钮,您将创建新请求并创建新的空列表。 您必须将旧对象存储在某处(例如数据库)。

Well I think your size is always 1 because in your addRequestParameter method you add only one element. Clicking next time this button you create new request and new empty list is created. You have to store your older objects somewhere (e.g. database).

更多推荐

value,<h,xhtml,电脑培训,计算机培训,IT培训"/> <meta name="description

本文发布于:2023-07-29 20:43:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1319595.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Java   Server   Faces

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!