jsfを使用して検索メソッドを作成しようとしていますが、コードに問題があります。誰かが私が間違っていることを教えてくれます.メソッドは、ユーザーが入力してクエリを実行し、結果をテーブルに渡すことを許可する必要があります.2つのクラスがあります.
コードをテストして動作するかどうかを確認すると、このエラーが発生します
javax.el.MethodNotFoundException: /index.xhtml @19,84 action="#{search.searchresult}": メソッドが見つかりません: Controller.Search@f09285.searchresult()
Java コード
@ManagedBean
public class Search {
private String q;
private List <Testpaper>test;
public List<Testpaper> getTest() {
return test;
}
public void setTest(List<Testpaper> test) {
this.test = test;
}
public String getQ() {
return q;
}
public void setQ(String q) {
this.q = q;
}
public void getSearchresult()throws SQLException{
test = new TestDAO().Searches(q);
}
}
public class TestDAO {
@Resource(name="jdbc/GradeSprout2")
DataSource ds;
public List<Testpaper> Searches(String q)throws SQLException {
List<Testpaper> test = new ArrayList<Testpaper>();
if(ds==null)
throw new SQLException("Can't get data source");
//get database connection
Connection con = ds.getConnection();
if(con==null)
throw new SQLException("Can't get database connection");
PreparedStatement ps
= con.prepareStatement(
"select * from test where testname like ?;");
try{
ps.setString(1, "%" + q + "%");
ResultSet result = null;
result = ps.executeQuery();
while (result.next()) {
Testpaper testpaper = new Testpaper();
testpaper.setTestname(result.getString("testname"));
test.add(testpaper);
}}catch(Exception e1){
}
finally{
try{
con.close();
}
catch(Exception e2){
}
}
return test;
}
public TestDAO(){
try {
Context ctx = new InitialContext();
ds = (DataSource)ctx.lookup("java:comp/env/jdbc/GradeSprout2");
} catch (NamingException e) {
e.printStackTrace();
}
}
}
JSF コード
<h:form>
<h:inputText size="95" value="#{search.q}"/>
<br></br>
<br></br>
<h:commandButton value="Find Test" action="#{search.searchresult}">
</h:commandButton>
</h:form>
<h:dataTable value="#{search.test}" var="test" rendered="#{not empty search.test}">
<h:column>#{test.testname}</h:column>
</h:dataTable>
<h:outputText value="No matches found!"
rendered="#{not empty search.q and empty search.test}" />