代码改变世界

项目新技术总结(1) 可自动写入文本框读取数据库的可选下拉框技术

2016-05-06 21:44  果冻大魔王  阅读(377)  评论(0)    收藏  举报

1.首先通过sql语句查看数据库将原来的类分类   例:

public List<String> findClassName() {
// TODO Auto-generated method stub
String hql = "select DISTINCT banji.className from Banji banji";
Session session = this.getSessionFactory().openSession();
Query q = session.createQuery(hql);
List<String> l = q.list();
session.close();
return l;
}

这里用String集合而不用对象集合的原因是因为在测试过程中 用对象集合占用缓存过多,有时候会出现卡顿现象,所以使用String集合不用获得整个对象,只需要获得对象这一类属性即可,最后session.close一下彻底解决了卡顿现象。

通过action将得到的集合传递到页面中

List<String> classNames =this.Bservice.findClassName();
getRequest().setAttribute("classNames",classNames);

在jsp页面中添加fution

function selectFN(inputName) {
var selectInput = document.addBanji[inputName + "Select"];
var index = selectInput.selectedIndex;
var option = selectInput.options[index];
document.addBanji[inputName].value=option.text;
}
function init() {
selectFN("className");
}

最后在jsp中使用

<s:textfield name="className" cssClass="InputStyle"/>
<select name="classNameSelect" onChange="selectFN('className');">
<c:forEach items="${classNames }" var="className">
<option>${className }</option>
</c:forEach>
</select>

 

这样下拉框中就可以选择这一类数据库中已有的信息,并且可以自动写入。