如何从 xhtml 获取 bean 字符串变量并将其发送到列表方法?
How to reach a bean string variable from xhtml and send it to a list method?
我正在尝试发送一个从用户那里获得的输入文本变量,然后将它发送到我的 bean 页面中的一个方法,以便它可以在我的查询中被替换。我将获取列表并将它们显示为 table。
这是我的 bean 方法:
public String searchWord;
public List<Product> searchList;
public List<Product> getSearchList() {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
Query query = session.createQuery("From Product where name LIKE '"+searchWord+"%'");
searchList = query.list();
return searchList;
}
如果我设置 searchWord="Ku",那么我会得到正确的插入并看到以“Ku”开头的数据。
然后我试图从我的 xhtml 页面访问它,这样我就可以从用户那里得到“Ku”。
这是我的 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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Products</title>
</h:head>
<h:body>
<h:form id="id-form" >
<h2><h:outputText value ="List of all products"></h:outputText></h2>
<h:dataTable style="border: 4px solid black;" value = "#{products_controller.searchList}" rows="#{products_controller.searchList.size()}" var = "item" border="1" headerClass="tableHeader" >
<h:column>
<f:facet name="header"> Product ID </f:facet>
<h:outputText value="#{item.p_id}" />
</h:column>
<h:column>
<f:facet name="header"> Product Name </f:facet>
<h:outputText value="#{item.p_name}" />
</h:column>
<h:column>
<f:facet name="header"> Product Class </f:facet>
<h:outputText value="#{item.p_class}" />
</h:column>
<h:column>
<f:facet name="header" > Product price </f:facet>
<h:outputText value="#{item.p_price}" />
</h:column>
<h:column>
<f:facet name="header"> Product Description </f:facet>
<h:outputText value="#{item.p_property}" />
</h:column>
<h:column>
<f:facet name="header"> Product Total </f:facet>
<h:outputText value="#{item.p_total}" />
</h:column>
</h:dataTable>
</h:form>
</h:body>
</html>
如何使用 searchWord 更新我的搜索列表?
为您的搜索词插入 getter 和 setter
public String getSearchWord() { return searchWord; }
public void setSearchWord(String val) { searchWord = val; }
并在您的 xhtml 中
<h:form id="id-form" >
<h:inputText value="#{products_controller.searchWord}">
<f:ajax event="change" render=":id-form"/>
</h:inputText>
通过更改输入字段的内容(当光标离开该字段时),JSF 将发送一个 AJAX 请求来设置 searchWord 的值(以及表单中可能的其他输入字段)。
由于 render=
表单将使用另一个 searchWord 重新呈现。
我正在尝试发送一个从用户那里获得的输入文本变量,然后将它发送到我的 bean 页面中的一个方法,以便它可以在我的查询中被替换。我将获取列表并将它们显示为 table。 这是我的 bean 方法:
public String searchWord;
public List<Product> searchList;
public List<Product> getSearchList() {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
Query query = session.createQuery("From Product where name LIKE '"+searchWord+"%'");
searchList = query.list();
return searchList;
}
如果我设置 searchWord="Ku",那么我会得到正确的插入并看到以“Ku”开头的数据。 然后我试图从我的 xhtml 页面访问它,这样我就可以从用户那里得到“Ku”。 这是我的 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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Products</title>
</h:head>
<h:body>
<h:form id="id-form" >
<h2><h:outputText value ="List of all products"></h:outputText></h2>
<h:dataTable style="border: 4px solid black;" value = "#{products_controller.searchList}" rows="#{products_controller.searchList.size()}" var = "item" border="1" headerClass="tableHeader" >
<h:column>
<f:facet name="header"> Product ID </f:facet>
<h:outputText value="#{item.p_id}" />
</h:column>
<h:column>
<f:facet name="header"> Product Name </f:facet>
<h:outputText value="#{item.p_name}" />
</h:column>
<h:column>
<f:facet name="header"> Product Class </f:facet>
<h:outputText value="#{item.p_class}" />
</h:column>
<h:column>
<f:facet name="header" > Product price </f:facet>
<h:outputText value="#{item.p_price}" />
</h:column>
<h:column>
<f:facet name="header"> Product Description </f:facet>
<h:outputText value="#{item.p_property}" />
</h:column>
<h:column>
<f:facet name="header"> Product Total </f:facet>
<h:outputText value="#{item.p_total}" />
</h:column>
</h:dataTable>
</h:form>
</h:body>
</html>
如何使用 searchWord 更新我的搜索列表?
为您的搜索词插入 getter 和 setter
public String getSearchWord() { return searchWord; }
public void setSearchWord(String val) { searchWord = val; }
并在您的 xhtml 中
<h:form id="id-form" >
<h:inputText value="#{products_controller.searchWord}">
<f:ajax event="change" render=":id-form"/>
</h:inputText>
通过更改输入字段的内容(当光标离开该字段时),JSF 将发送一个 AJAX 请求来设置 searchWord 的值(以及表单中可能的其他输入字段)。
由于 render=
表单将使用另一个 searchWord 重新呈现。