JSF学习(一)——基本问题

前段时间学习JSF过于激进,所以遇到好多并不是问题的问题,所以决定重头开始学习JSF。

买了本《JavaServer Faces 完全参考手册》巩固知识(讲得很不错,全面详细,翻译的也不错,比JSF in action 更注重基础)。使用的环境是Eclipse Jee版 + JBoss tool,用起来感觉比MyEclipse好用多了(占用资源少,操作反应很快,UI操作很友好,推荐使用)。这些内容来自于以为业内前辈,他写的blog很有启发性,有兴趣的同仁可以阅读一下。地址:http://hi.baidu.com/jsfcn/blog/item/ffbf40fb60875767024f567a.html

现在开始说正题:最好的学习是有个简单的例子,一步一步的教你如何做。《参考手册》开篇的例子简单,不过很基础,也没用IDE。照着操作了一遍,代码当然不成问题,结果一运行就出了问题:

com.sun.facelets.FaceletException: Error Parsing  / register.jsp: Error Traced[line:  1 ] The markup in the document preceding the root element must be well - formed.
    at com.sun.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:
234 )
    at com.sun.facelets.compiler.Compiler.compile(Compiler.java:
105 )
    at com.sun.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:
197 )
    at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:
144 )
    at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:
95 )
    at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:
502 )
    at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:
552 )
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:
110 )
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:
100 )
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:
139 )
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:
266 )
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290 )
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206 )
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233 )
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
175 )
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
128 )
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102 )
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109 )
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
263 )
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
844 )
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:
584 )
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447 )
    at java.lang.Thread.run(Thread.java:
595 )

之前用MyEclipse哪遇到过这问题啊。看来那句话还真对“IDE工具,会让高手成倍的提高效率,会让初手变成白痴”。这会傻了眼,只好慢慢的找解决方法了。

解决办法是:

通常在JSF文件中是在开头引入标签库的

<% @ taglib uri = " http://java.sun.com/jsf/html "  prefix = " h "   %>
<% @ taglib uri = " http://java.sun.com/jsf/core "  prefix = " f "   %>

也许是我在建环境时弄得有点混乱,加了facelet支持,但是却不使用.xhtml,而是用基础的jsp来作例子,所以弄的对jsp文件的检测比较严格,所以需要用namespace的方式来定义taglibs(个人猜测)。

< f:view xmlns:f = " http://java.sun.com/jsf/core "  
xmlns:h
= " http://java.sun.com/jsf/html "   >

    
< head >
        
< title > Main Page </ title >
    
</ head >

在我的环境里这样是可以解决问题的,不知道在其他的环境中如何,不过倒是可以试一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码匠君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值