对开发的一个小网页中出现的几个问题予以总结

来源:互联网 发布:多尺度分析优化方法 编辑:程序博客网 时间:2024/06/14 16:34

问题1,用grid显示list<xxx>的数据,可是时间显示的只是日期而没有时间,存的时候用的是chenillekit 包

原因是: 没有用dateformater改变日期格式,

缺点:显示出来的是simpleDateFormat.format(Date date) 的字符串而不是date.

问题2,想要在放在block中的form里边添加<t:errors/>,so I add an

@Component

private Form xxForm,

However, exception occurs and indicates that the form I just defiend is not represented in the template (tml) file.

solution: change all form tag in template file from <t:form bla bal> to <form t:type="form" t:id="xxForm">

and do know why is it, it just work now

 

Question

一个程序在运行中,有sessionstateobject,当我把本地文件拷贝到服务器上面时,如果不重新启动服务器,会有page is dirty, and not be put back to page pool and need to be discarded,

 

Question

在用Hibernate进行查询时,出现这样的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: antlr/ANTLRException
郁闷了很久,因为以前一直这样做没什么问题啊,且Insert都正常,搞了半天,原来是Hibernate3.0与2.0有所不同
增加了antlr-2.7.6.jar这个包,将这个包加上就OK了!


Question

@Inject注入只能在页面和class中使用

Question

出现这种问题是因为HQL语句出现问题,引起内部查询对象为空,无法处理为空值引起的。解决方法,检查HQL语句(尤其是关键字)。

Question3:

If I do not add the valueEncoder to the loop, it will show error messages below

org.apache.tapestry5.runtime.ComponentEventException

Could not find a coercion from type java.lang.String to type com.org.model.Fl2010Answer. Available coercions: Double --> Float, Float --> Double, Long --> Boolean, Long --> Byte, Long --> Double, Long --> Integer, Long --> Short, Number --> Long, Object --> Object[], Object --> String, Object --> java.util.List, Object[] --> java.util.List, String --> Boolean, String --> Double, String --> Long, String --> java.io.File, String --> java.math.BigDecimal, String --> java.math.BigInteger, String --> java.text.DateFormat, String --> java.util.regex.Pattern, String --> org.apache.tapestry5.Renderable, String --> org.apache.tapestry5.SelectModel, String --> org.apache.tapestry5.corelib.LoopFormState, String --> org.apache.tapestry5.corelib.data.BlankOption, String --> org.apache.tapestry5.corelib.data.GridPagerPosition, String --> org.apache.tapestry5.corelib.data.InsertPosition, String --> org.apache.tapestry5.ioc.Resource, String --> org.apache.tapestry5.ioc.util.TimeInterval, boolean[] --> java.util.List, byte[] --> java.util.List, char[] --> java.util.List, double[] --> java.util.List, float[] --> java.util.List, int[] --> java.util.List, java.math.BigDecimal --> Double, java.util.Collection --> Boolean, java.util.Collection --> Object[], java.util.Collection --> org.apache.tapestry5.grid.GridDataSource, java.util.List --> org.apache.tapestry5.SelectModel, java.util.Map --> org.apache.tapestry5.SelectModel, long[] --> java.util.List, null --> Boolean, null --> org.apache.tapestry5.grid.GridDataSource, org.apache.tapestry5.ComponentResources --> org.apache.tapestry5.PropertyOverrides, org.apache.tapestry5.PrimaryKeyEncoder --> org.apache.tapestry5.ValueEncoder, org.apache.tapestry5.Renderable --> org.apache.tapestry5.Block, org.apache.tapestry5.Renderable --> org.apache.tapestry5.runtime.RenderCommand, org.apache.tapestry5.ioc.util.TimeInterval --> Long, org.apache.tapestry5.runtime.ComponentResourcesAware --> org.apache.tapestry5.ComponentResources, short[] --> java.util.List.

Answer: the value encoder

/**               
*/

package com.org.util;

import java.util.List;

import org.apache.tapestry5.ValueEncoder;

import com.org.model.Fl2010Answer;
import com.org.model.Fl2010Questions;

/**
 * 创 建 人:  xxx
 * 生成日期 : Jun 3, 2010
 */
public class AnswerValueEncoder implements ValueEncoder
{
    private List<Fl2010Answer> list;
    public AnswerValueEncoder(List<Fl2010Answer> list){
        this.list = list;
    }
    /* (non-Javadoc)
     * @see org.apache.tapestry5.ValueEncoder#toClient(java.lang.Object)
     */
    public String toClient(Object arg0) {
        if(list != null){
            Fl2010Answer p = (Fl2010Answer)arg0;
            for(Fl2010Answer v:list){
                if(v.getId().longValue() == p.getId().longValue())
                    return v.getId().toString();
            }
        }
        return null;
    }

    /* (non-Javadoc)
     * @see org.apache.tapestry5.ValueEncoder#toValue(java.lang.String)
     */
    public Object toValue(String arg0) {
        Long id = new Long(arg0);
        if(list != null){
            for(Fl2010Answer v:list){
                if(v.getId().longValue() == id.longValue())
                    return v;
            }
        }
        return null;
    }
}

Question 4
如果一个变量已经声明 @Property
下面在定义这个变量的getters and setters, will cause exception
  • java.lang.ClassNotFoundException
    caught an exception while obtaining a class file for com.org.pages.CRUDQuestionare
    exception
    org.apache.tapestry5.internal.services.TransformationException: Unable to add new method public final java.util.Date getExplainStopUntil() as it already exists.
  • org.apache.tapestry5.internal.services.TransformationException
    Unable to add new method public final java.util.Date getExplainStopUntil() as it already exists.
Question 5

如果session state object 没有被初始化就被使用的话,会产生一个叫没有implement interface B]的exception
Question 6
                oracle中大文字量的处理
      这几天被oracle中的clob字段搞得心烦意乱,在数据库中有字段content,在hibernate中配置文件如下:
Java代码
  1. <property name="content" type="text" lazy="true">  
  2.             <column name="CONTENT"   />  
  3.         </property>  

使用了ojdbc14.jar这个oracle10G的数据库驱动以后,可以把clob当成string直接操作,但是在hibernate里使用text类型来映射,在pojo类中还是直接使用string.
查了网上很多资料,许多都是要使用流操作来操作clob,这个对于hibernate不好用。
按以上配置好后,在插入数据还是保存,错误如下:
Java代码
  1. java.sql.SQLException: ORA-01483: DATE 或 NUMBER 赋值变量的长度无效  

郁闷了很久,结果最后发现,当插入String字段在1001至2000长度时会报这个错误,当长度不在这个区间就不会出这种问题,现在的办法是把插入字段在1001至2000时,添加空格增加长度,这样就不会报错。
当取出来显示时就用trim就OK了。
ojdbc14.jar可以兼容至oracle8 ,但8需要打补丁。
Question 7

Tomcat在启动时出现如下异常问题:

严重: IOException while loading persisted sessions: java.io.EOFException
严重: Exception loading sessions from persistent storage

是因为保存在硬盘上的session数据读取失败,问题似乎不大,但是如果不处理一下,每次启动都会出现这个问题,处理方法如下:

将work下面的文件清空,主要是*.ser文件,或者只是删除掉session.ser亦可。

 

Question 8


如果出现如下错误,则可能是Hibernate SQL方言 (hibernate.dialect)设置不正确。
Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]'last_insert_id' 不是可以识别的 函数名。

RDBMS 方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS390 org.hibernate.dialect.DB2390Dialect PostgreSQL org.hibernate.dialect.PostgreSQLDialect MySQL org.hibernate.dialect.MySQLDialect MySQL with InnoDB org.hibernate.dialect.MySQLInnoDBDialect MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect Oracle (any version) org.hibernate.dialect.OracleDialect Oracle 9i/10g org.hibernate.dialect.Oracle9Dialect Sybase org.hibernate.dialect.SybaseDialect Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect Microsoft SQL Server org.hibernate.dialect.SQLServerDialect SAP DB org.hibernate.dialect.SAPDBDialect Informix org.hibernate.dialect.InformixDialect HypersonicSQL org.hibernate.dialect.HSQLDialect Ingres org.hibernate.dialect.IngresDialect Progress org.hibernate.dialect.ProgressDialect Mckoi SQL org.hibernate.dialect.MckoiDialect Interbase org.hibernate.dialect.InterbaseDialect Pointbase org.hibernate.dialect.PointbaseDialect FrontBase org.hibernate.dialect.FrontbaseDialect Firebird org.hibernate.dialect.FirebirdDialect
原创粉丝点击