发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 CQRS

一个很奇怪的问题:关于struts自定义标签

2006-06-17 21:13
赞助商链接

我定义了一个sturts标签,用于显示select下拉列表初始化的内容,下面还有两个文本框和提交按钮,可是在执行时,页面上只显示了select的内容,文本框和提交按钮都没有显示出来,而且select中的内容也显示得不完全,因为select的内容是从数据库读出的,可是页面上select中的记录数少于数据库中的记录数,这是为什么?以下是我的自定义标签:
package tag;

import java.util.Iterator;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.Hibernate.SessionFactory;
import com.jingpin.Courseinfo;
import com.jingpin.Kindinfo;

public class InitListTag extends TagSupport {
private Log log = LogFactory.getLog(this.getClass().getName());
public int doEndTag() throws JspException{
JspWriter out=pageContext.getOut();
try{
out.println("<select size=\"8\" name=\"select1\" id=\"select1\" style=\"width:200\" ondblclick=\"add();\" multiple=\"multiple\">");
Session session=SessionFactory.currentSession();
Transaction tx=session.beginTransaction();
Query query=session.createQuery("from Courseinfo c,Kindinfo k where c.kindType=k.kindType and c.kindSecond=k.kindSecond order by c.kindSecond");
for(Iterator it=query.iterate();it.hasNext();){
Object[] objs=(Object[])it.next();
Courseinfo cinfo=(Courseinfo)objs[0];
Kindinfo kinfo=(Kindinfo)objs[1];
String str1=cinfo.getCourseId().toString();
String str2=cinfo.getCourseName();
String str3=cinfo.getSchoolName();
String str4=cinfo.getCourseDutyName();
String str5=cinfo.getKindFirst();
String str6=kinfo.getKindFirstName();
String str7=cinfo.getKindSecond();
String str8=kinfo.getKindSecondName();
out.println("<option value =\""+str1+"\">"+str2+","+str3+","+str4+","+str5+","+str6+","+str7+","+str8+"</option>");
}
out.println("</select>");
tx.commit();
SessionFactory.closeSession();
}catch(Exception e){
throw new JspTagException("IOException:" + e.toString());
}
return EVAL_PAGE;
}
}
注:我曾经以为是返回值有问题,但是将返回值改为return super.doEndTag();之后还是不对。
急死我了

2006-06-19 14:38

首先,你的设计代码有问题:
在界面代码中直接调用数数据操作,这两个方面偶合在一起了,和传统两层结构没有区别.

别以为我没有回答你问题,正是这样偶合代码,所以,你现在出现问题,自己无法判断维护,也就是带来维护性差的问题,其他人也不是神仙,也不会立即一眼就看出,除非和你一样编码,一样错误.

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com