读书人

有关搜索的有关问题很简单就是弄不

发布时间: 2012-09-23 10:28:11 作者: rapoo

有关搜索的问题,很简单,就是弄不出来
做了一个简单的demo,想要实现搜索一个学生的姓名,然后显示学生的个人信息,感觉输入的信息不能进入到后台,代码如下

Java code
public boolean getStudentsByName(students st) {        System.out.println("验证数据...");        String hql = "from students s where s.name = '" + st.getName() + "'";        List list= this.getHibernateTemplate().find(hql);        System.out.println("共找到数据:" + list.size());        if(list.size() > 0 && list != null) {            return true;        }        return false;    }

这是dao里面的代码,验证数据...后面的hql语句还有list都没有看到输入的name,然后“共找到数据:”就是0
service里面实现了对dao 的调用
然后是action的代码
Java code
public String showStudents() throws Exception {        students st = new students();        if(studentsService.getStudentsByName(st)) {            System.out.println("登录状态:" + studentsService.getStudentsByName(st));            return SUCCESS;        }        return ERROR;    }

里面students st = new students(); 如果不定义st,那么dao里面的getStudentsByName(students st) ,st会显示为null
这是jsp页面的搜索:
<s:textfield name="st.name" label="请输入学生姓名:"></s:textfield><s:submit value="搜索"></s:submit>

[解决办法]
students st = new students();
if(studentsService.getStudentsByName(st)) {
System.out.println("登录状态:" + studentsService.getStudentsByName(st));
你在这new一个student当然传进去的参数是null的
你这的st应该在form里定义的,这样表单提交的时候就能将页面值传进去,
还有你的action应该有参数ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response或者你这样写的后可以用request获得页面值
[解决办法]
Java code
jsp:<form id="form1" name="form1" method="post" action="**.action"><s:textfield name="name" label="请输入学生姓名:"></s:textfield><s:submit value="搜索"></s:submit>action:public String name;public String showStudents() throws Exception {            if(studentsService.getStudentsByName(name)) {            System.out.println("登录状态:" + studentsService.getStudentsByName(st));            return SUCCESS;        }        return ERROR;    }geter  seter;service:public boolean getStudentsByName(String st) {        System.out.println("验证数据...");        String hql = "from students s where s.name = '" + st.getName() + "'";        List list= this.getHibernateTemplate().find(hql);        System.out.println("共找到数据:" + list.size());        if(list.size() > 0 && list != null) {            return true;        }        return false;    }
[解决办法]
探讨
Java code


jsp:
<form id="form1" name="form1" method="post" action="**.action">
<s:textfield name="name" label="请输入学生姓名:"></s:textfield><s:submit value="搜索"></s:submit>
</form>
action:
public String……

[解决办法]
<s:textfield name="st.name" label="请输入学生姓名:"></s:textfield><s:submit value="搜索"></s:submit>

根据你的写法,需要在对应的action类中有一个属性:private String st.name; 然后是get、set方法,这样你提交的时候就能够接收到界面传输过来的数据,然后再写一个方法,
Student st = (Student )getHibernateTemplate().find("from Student where name =‘" +st.name+ "'" ).get(0);


然后就可以使用你的方法了:studentsService.getStudentsByName(st)
。。。。

读书人网 >Java Web开发

热点推荐