当前位置: 代码迷 >> Java Web开发 >> 有关搜索的有关问题,很简单,就是弄不出来
  详细解决方案

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

热度:9510   发布时间:2013-02-25 21:11:48.0
有关搜索的问题,很简单,就是弄不出来
做了一个简单的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);
  相关解决方案