免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3657 | 回复: 1
打印 上一主题 下一主题

struts框架中,jsp,action,formbean等的一些经验教训 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-06 22:18 |只看该作者 |倒序浏览
******************************************************************************
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: XML parsing error on file /WEB-INF/struts-html.tld: Internal Error: File /javax/servlet/jsp/resources/web-jsptaglibrary_1_1.dtd not found
       at org.apache.jasper.xmlparser.ParserUtils.parseXMLDocument(ParserUtils.java:197)
       at org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:243)
......
   
     

解决方法:后来通过新建struct的图,重新做action和formbean等,解决了这个问题,期间重新配置了tomcat,不知道问题真正在哪里。估计是缺少jsp的标签库,只是针对该webapps,其它的webapps不受影响。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


******************************************************************************
web一直起不出来
解决方法:在服务器视图中,当前server的配置中要加入相应的webapps,在add and remove projects中



^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


******************************************************************************
为什么要在action中将FormAction改成DispatchAction?如:
public class PbxPbxAction extends DispatchAction {
原因是:不执行FormAction的excute()方法;
       执行DispatchAction的create,read,update,delete方法,合称CRUD


^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


******************************************************************************
在执行jsp文件时,一直保称某个BEAN找不到,而它实际存在。

解决办法:可能是jsp文件中缺少某种标签库的导入,以致于该bean实际存在,但是在标签格式中无法识别
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


******************************************************************************
一直有package的错误,和import的错误,明明存在,却说不能解析
该问题是由于项目数据初次倒入,没有整体编译,以致没有找到相应的class,所以等于是该包的结构不存在,或者对象类的class文件没有,而对于web应用来说不可见。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


******************************************************************************
在formAction中,定义一个数组ar,在赋值后将其加入到名字为tmlList的对象中
  ArrayList ar = new ArrayList();
for (int i = 0;i < 10;i++)
   {                                                                                        java.util.Date utdate = new java.util.Date();                                          TmlInfoForm bean = new TmlInfoForm();
     bean.setName("sssssss";
     bean.setCode(858);
           ar.add(bean);
}     
request.setAttribute("tmlList",ar);                                

----------------------------------------
在jsp文件中,为了将这个bean的对象取出来,用了以下语句,对象名字tmlList是对应的,property的名字也应该是对应的,如:

<logic:present name = "tmlList">;
    <logic:iterate id = "bean" name = "tmlList">;
    <TR>;
    <TD width="107">;<bean:write name = "bean" property = "name" />;</TD>;
    <TD width="229">;<bean:write name = "bean" property = "code" />;</TD>;
    <TD>;<bean:write

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


******************************************************************************
在项目的运行过程中,发现一直有某个action没有找到
经过检查发现,在webapps下面的classes目录中,该action的确没有编译过的class存在,连它相邻的其它的action的class也不存在,估计是没有编译,可以反复编译,没有用,这时,发现有一个无关的jsp文件不存在,而图标有红色的叉,会不会因为它而导致?于是随便将这个jsp文件建立,重新编译,运行正常。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
******************************************************************************
关于表格中表格元素:
<TR>;
<TH  height="27">;tmlId</th>;
<td colspan="1" height="25">;<html:text readonly="true" property="tmlId" />;</td>;
<Th>;tmlName</th>;
<td colspan="1" height="25">;<html:text readonly="true"  property="tmlName" />;</td>;
</TR>;               

其中<html:text readonly="true"  property="tmlName" />;只是描述一个文本框
前后的<td colspan="1" height="25">;</td>;表示在表格中的一格,不可以缺少的
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

******************************************************************************
关于在jsp中递归调用:
<TABLE id = "pbxtable" width = "100%" border="1">;
<TBODY>;
<TR>;
<TD width="9%">;<SPAN onmouseout="this.style.textDecoration='none'" onmouseover="this.style.textDecoration='underline'" style="CURSOR: hand;" onclick="javascript:tablesort('arrow0','pbxtable','reverse',0)">;交换机名称<image id="arrow0" src="/resourceManager/images/arrow_down.gif">;</SPAN>;</TD>;
<TD width="19%">;<SPAN onmouseout="this.style.textDecoration='none'" onmouseover="this.style.textDecoration='underline'" style="CURSOR: hand;" onclick="javascript:tablesort('arrow1','pbxtable','reverse',1)">;交换机号<image id="arrow1" src="/resourceManager/images/arrow_down.gif">;</SPAN>;</TD>;
<TD width = "15%">;<SPAN onmouseout="this.style.textDecoration='none'" onmouseover="this.style.textDecoration='underline'" style="CURSOR: hand;" onclick="javascript:tablesort('arrow2','pbxtable','reverse',2)">;交换机类型<image id="arrow2" src="/resourceManager/images/arrow_down.gif">;</SPAN>;</TD>;
</TR>;

<logic:present name = "pbxList">;
<logic:iterate id = "bean" name = "tmlList">;
<TR>;
  <TD width="107">;<bean:write name = "bean" property = "name" />;</TD>;
  <TD width="229">;<bean:write name = "bean" property = "code" />;</TD>;
  <TD>;<bean:write name = "bean" property = "deviceModelName" />;</TD>;        
  <TD width="115">;<a href = "tmlPbxAction.do?method=list&sid=<bean:write name = "bean" property = "code"/>;">;编辑</a>;
  <a href = "tmlPbxAction.do?method=delete&sid=<bean:write name = "bean" property = "code"/>;" onclick='return confirm("是否确认删除?"'>;删除</a>;
  </TD>;
  </TR>;
</logic:iterate>;
</logic:present>;
</TBODY>;
</TABLE>;
--------------------------------------
其中:<logic:iterate>;<logic:present>;是递归调用和判断是否空值的语句
onmouseout="this.style.textDecoration='none'"          //鼠标移出
onmouseover="this.style.textDecoration='underline'"    //鼠标悬停
style="CURSOR: hand;"                                  //鼠标图标
onclick="javascript:tablesort('arrow2','pbxtable','reverse',2)">;//激活排序js
<image id="arrow2" src="/resourceManager/images/arrow_down.gif">;//图标
<a href = "tmlPbxAction.do?method=delete&sid=<bean:write name = "bean" property = "code"/>;"                                                       //连接,带出参数
onclick='return confirm("是否确认删除?"'>;删除</a>;              //出现确认框

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


******************************************************************************
在项目的运行过程中,一直没有数据
经过以下步骤,最终数据得到显示:
1、在url中,用tmlPbxAction.do?method=list&id=1可以 显示有数据的,因为tmlDetail.jsp只能显示静态的叶面,没有数据可以显示,因为没有执行相关的动作。
2、在struts-config.xml配置中要在tmlPbxAction的里面actionMapping选项卡中有的paramenter参数中设‘method’,在type中设‘bss.resourcemanager.rscmng.phonemng.devmng.web.actions.TmlPbxAction’
3、在tmlDetail.jsp中,<TD>;<bean:write name = "bean" property = "rscStatusName" />;</TD>;的property的值笔误成rscStateName
4、经过以上步骤的修正,可以正确执行;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^



******************************************************************************
在新建的jsp页面,一直出现以下的错误:

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: -1 in the jsp file: null

Generated servlet error:
   [javac] Compiling 1 source file
   [javac] C:\JBuilderX\thirdparty\jakarta-tomcat-4.1.27-LE-jdk14\work\Standalone\localhost\resourceManager\phonemng\moduleEdit_jsp.java:8: cannot resolve symbol
   [javac] symbol  : class ModuleInfForm
   [javac] location: package forms
   [javac] import bss.resourcemanager.rscmng.phonemng.devmng.web.forms.ModuleInfForm;
   [javac]                                                             ^
   [javac] C:\JBuilderX\thirdparty\jakarta-tomcat-4.1.27-LE-jdk14\work\Standalone\localhost\resourceManager\phonemng\moduleEdit_jsp.java:210: cannot resolve symbol
   [javac] symbol  : class ModuleInfoForm
   [javac] location: class org.apache.jsp.moduleEdit_jsp
   [javac] ModuleInfoForm moduleForm = (ModuleInfoForm) request.getAttribute("ModuleInfoForm";
   [javac] ^
   [javac] C:\JBuilderX\thirdparty\jakarta-tomcat-4.1.27-LE-jdk14\work\Standalone\localhost\resourceManager\phonemng\moduleEdit_jsp.java:210: cannot resolve symbol
   [javac] symbol  : class ModuleInfoForm
   [javac] location: class org.apache.jsp.moduleEdit_jsp
   [javac] ModuleInfoForm moduleForm = (ModuleInfoForm) request.getAttribute("ModuleInfoForm";
   [javac]                              ^
   [javac] 3 errors


       at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:130)
       at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:293)
       at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:353)
       at org.apache.jasper.compiler.Compiler.compile(Compiler.java

-----------------------------------------
解决方法:
经分析,确认该formbean是存在的,但是找不到,于是认为是在jsp文件中没有import进来
经查:

<%@ page
language="java"
contentType="text/html; charset=GB18030"
pageEncoding="GB18030"
import="java.util.*,bss.resourcemanager.rscmng.phonemng.devmng.web.forms.ModuleInfForm,bss.common.bean.ExtendBean"
%>;
里面没有正确引用formbean的名称,将这里改为正确的以后就可以了
import="java.util.*,bss.resourcemanager.rscmng.phonemng.devmng.web.forms.ModuleInfoForm,bss.common.bean.ExtendBean"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

******************************************************************************
在jsp的运行过程中出现以下错误:
org.apache.jasper.JasperException: No getter method for property deviceName of bean org.apache.struts.taglib.html.BEAN
       at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
       at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
       at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
------------------------------------------
解决方法:
经过察看错误信息,发现里面有deviceName的property找不到,按道理不应该出现
判断是form的action标签写错,原有如下:
<html:form action="/pbxPbxAction">; 估计是拷贝过来的时候没有注意,修改成如下
<html:form action="/modulePbxAction">; 该错误消除
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

论坛徽章:
0
2 [报告]
发表于 2004-10-07 00:22 |只看该作者

struts框架中,jsp,action,formbean等的一些经验教训

..................
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP