-1

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}" />
4

1 に答える 1