Java 来自ManagedBean的数据不';不要在视图中刷新
我试图用产品列表更新数据表,但当我调用getCatalogProducts操作时,它不会刷新视图。数据不会显示在视图中 这是我的JSF的ManagedBean:Java 来自ManagedBean的数据不';不要在视图中刷新,java,jsf,primefaces,Java,Jsf,Primefaces,我试图用产品列表更新数据表,但当我调用getCatalogProducts操作时,它不会刷新视图。数据不会显示在视图中 这是我的JSF的ManagedBean: @ManagedBean(name = "catalog") @ViewScoped public class CatalogMgtBean { private String value = "This is the value"; private List<Port> products; priv
@ManagedBean(name = "catalog")
@ViewScoped
public class CatalogMgtBean {
private String value = "This is the value";
private List<Port> products;
private CatalogService catalogService;
public void loadCatalogProducts() {
catalogService = new CatalogServiceImpl();
products = catalogService.getProducts();
this.value = "This is another value";
}
public List<Port> getProducts() {
return products;
}
public void setProducts(List<Port> products) {
this.products = products;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
@ManagedBean(name=“catalog”)
@视域
公共类目录bean{
private String value=“这是值”;
私人上市产品;
私人编目服务;
公共产品目录(){
catalogService=新CatalogServiceImpl();
products=catalogService.getProducts();
this.value=“这是另一个值”;
}
公共列表产品(){
退货产品;
}
公共产品(列出产品){
这一点。产品=产品;
}
公共字符串getValue(){
返回值;
}
公共void设置值(字符串值){
这个值=值;
}
}
这是我的观点:
<?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://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<h:form id="catalogForm">
<p:dataTable id="productsDT" paginator="true" paginatorPosition="bottom"
rows="10" value="#{products}" var="products">
<p:column headerText="ID">
<h:outputText value="#{products.id}" />
</p:column>
<p:column headerText="ID">
<h:outputText value="#{products.nombre}" />
</p:column>
<p:column headerText="ID">
<h:outputText value="#{products.nacional}" />
</p:column>
<p:column headerText="FECHA">
<h:outputText value="#{products.fecha}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column headerText="ESTADO">
<h:outputText value="#{products.estado}" />
</p:column>
</p:dataTable>
<p:commandButton id="gettingProducts" value="Getting the products..."
action="#{catalog.loadCatalogProducts()}" update="productsDT" />
</h:form>
</h:body>
</html>
当我按下gettingProducts命令按钮时,它会成功调用getCatalogProducts操作,但不会用数据刷新视图
怎么了
我正在补充信息。这是我的web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>JSAC</display-name>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<!-- Welcome page -->
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<!-- Servlets -->
<!-- JavaServer Faces -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>JSAC</groupId>
<artifactId>JSAC</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>JSAC</name>
<properties>
<!-- Generic properties -->
<java.version>1.6</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Web -->
<jsp.version>2.2</jsp.version>
<jstl.version>1.2</jstl.version>
<servlet.version>2.5</servlet.version>
</properties>
<repositories>
<repository>
<id>prime-repo</id>
<name>Prime Repo</name>
<url>http://repository.primefaces.org</url>
</repository>
</repositories>
<dependencies>
<!-- Primefaces -->
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>3.3</version>
</dependency>
<!-- JSF -->
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1.11</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.11</version>
</dependency>
<!-- Postgres DB -->
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.0-801.jdbc4</version>
</dependency>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp.version}</version>
</dependency>
<!-- Javamelody -->
<dependency>
<groupId>net.bull.javamelody</groupId>
<artifactId>javamelody-core</artifactId>
<version>1.46.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
JSAC
javax.faces.PROJECT_阶段
发展
index.xhtml
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
*.xhtml
和我的pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>JSAC</display-name>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<!-- Welcome page -->
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<!-- Servlets -->
<!-- JavaServer Faces -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>JSAC</groupId>
<artifactId>JSAC</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>JSAC</name>
<properties>
<!-- Generic properties -->
<java.version>1.6</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Web -->
<jsp.version>2.2</jsp.version>
<jstl.version>1.2</jstl.version>
<servlet.version>2.5</servlet.version>
</properties>
<repositories>
<repository>
<id>prime-repo</id>
<name>Prime Repo</name>
<url>http://repository.primefaces.org</url>
</repository>
</repositories>
<dependencies>
<!-- Primefaces -->
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>3.3</version>
</dependency>
<!-- JSF -->
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1.11</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.11</version>
</dependency>
<!-- Postgres DB -->
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.0-801.jdbc4</version>
</dependency>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp.version}</version>
</dependency>
<!-- Javamelody -->
<dependency>
<groupId>net.bull.javamelody</groupId>
<artifactId>javamelody-core</artifactId>
<version>1.46.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
4.0.0
JSAC
JSAC
0.0.1-快照
战争
JSAC
1.6
UTF-8
UTF-8
2.2
1.2
2.5
优质回购
优质回购
http://repository.primefaces.org
org.primefaces
素面
3.3
com.sun.faces
JSFAPI
2.1.11
com.sun.faces
jsf impl
2.1.11
postgresql
postgresql
9.0-801.jdbc4
javax.servlet
jstl
${jstl.version}
javax.servlet
servlet api
${servlet.version}
javax.servlet.jsp
jsp api
${jsp.version}
net.bull.javamelody
javamelody核心
1.46.0
org.apache.maven.plugins
maven编译器插件
2.3.2
${java.version}
${java.version}
以及faces-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1_24.xsd" version="2.1">
<application>
<resource-bundle>
<base-name>i18n.messages</base-name>
<var>msg</var>
</resource-bundle>
</application>
</faces-config>
i18n.信息
味精
使用update=“@form”。如果它有效,则使用开发人员工具查找datable的id并用该id替换@form。使用update=“@form”。如果它有效,则使用开发人员工具查找datable的id并用该id替换@form。除此之外,
应指定要更新的组件,您使用的是非null
/void
结果。换句话说,您正在创建一个新的视图。换句话说,旧视图和所有与之相关的视图范围的bean都将被销毁。新视图将创建一个新的视图范围bean。由于视图范围的bean由视图标识,因此新视图不再引用加载新列表的同一视图范围的bean
只需将action方法设为void
(为了清晰起见,我还将其重命名,因为这绝对不是getter)
这样,相同的视图将被重用,与之关联的现有视图范围bean将保持活动状态
第二个问题是没有将
绑定到任何bean属性。您需要将它绑定到{catalog.products}
,而不是绑定到不作为托管bean存在的{products}
另见:
应该指定您要更新的组件之外,您正在使用非null
/void
结果进行导航。换句话说,您正在创建一个新的视图。换句话说,旧视图和所有与之相关的视图范围的bean都将被销毁。新视图将创建一个新的视图范围bean。由于视图范围的bean由视图标识,因此新视图不再引用加载新列表的同一视图范围的bean
只需将action方法设为void
(为了清晰起见,我还将其重命名,因为这绝对不是getter)
这样,相同的视图将被重用,与之关联的现有视图范围bean将保持活动状态
第二个问题是没有将
绑定到任何bean属性。您需要将它绑定到{catalog.products}
,而不是绑定到不作为托管bean存在的{products}
另见:
null
/void
导航,这会导致从scrat重新创建视图范围的bean