JSF开发问题和解决是怎样的

本篇文章为大家展示了JSF开发问题和解决是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

公司主营业务:成都网站建设、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出五指山免费做网站回馈大家。

1.在<f:subview>里的<h:commandLink>的action不执行

很多时候<f:subview>是在包含页面的情况下被用到(例如包含一个导航页面),而被包含的页面里如果有非JSF标签(如<a>)的时候,必须额外使用<f:verbatim>包含它才不会报错。问题是<f:verbatim>包含的内容是不算在JSF标签的Component Tree里的,因此这里的<h:commandLink>的action就不会被执行了。解决的办法是不要在<f:verbatim>里用<h:commandLink>,即尽量全部使用JSF标签比较不容易出问题。

2.还是在<f:subview>里,action属性的方法虽然执行了,但不能转到faces-config里定义的目标页面

检查faces-config.xml里<from-view-id>,如果页面被包含的话,则<from-view-id>可能应为"/*",而不是如"/navigatorbar.jspx"这样。

3.结合EMF使用时,页面抛出找不到属性异常“Error getting property 'xxx' from bean of type XXXX”

EMF生成的XXXImpl里的构造方法是protected修饰的,改为public即可。(注意修改@generated修饰,否则下次重新生成时会被覆盖回来)

另(不仅限于EMF的情况):如果一个Bean里有两个同名但参数不同的方法,例如Customer有getRecords()和 getRecords(int year)这两个方法,则在JSF页面里用#{customer.value}会抛出同样的异常,我暂时还不确定是EL的问题还是JSF实现(我用的 trinidad)的问题,部分异常stack如下所示:

  1. 严重: Servlet.service() for servlet faces threw exception  

  2. javax.faces.el.PropertyNotFoundException: Error getting 
    property 'xxx' from bean of type XXXX  

  3.     at com.sun.faces.el.PropertyResolverImpl.getValue
    (PropertyResolverImpl.java:107)  

  4.     at com.sun.faces.el.impl.ArraySuffix.evaluate
    (ArraySuffix.java:167)  

  5.     at com.sun.faces.el.impl.ComplexValue.evaluate
    (ComplexValue.java:151)  

  6.     at com.sun.faces.el.impl.ExpressionEvaluatorImpl.
    evaluate(ExpressionEvaluatorImpl.java:243)  

  7.     at com.sun.faces.el.ValueBindingImpl.getValue
    (ValueBindingImpl.java:173)  

  8.     at com.sun.faces.el.ValueBindingImpl.getValue
    (ValueBindingImpl.java:154)  

  9.     at org.apache.myfaces.trinidad.bean.FacesBeanImpl.
    getProperty(FacesBeanImpl.java:66)  

  10.     at org.apache.myfaces.trinidad.component.UIXComponentBase.
    getProperty(UIXComponentBase.java:1100)  

  11.     at org.apache.myfaces.trinidad.component.UIXIterator.
    getValue(UIXIterator.java:415)  

  12.     at org.apache.myfaces.trinidad.component.UIXCollection
    ._flushCachedModel(UIXCollection.java:1127)  

  13.     at org.apache.myfaces.trinidad.component.UIXCollection.
    encodeBegin(UIXCollection.java:511)  

  14.     at org.apache.myfaces.trinidadinternal.uinode.UIComponent
    UINode._renderComponent(UIComponentUINode.java:317)  

  15.     at org.apache.myfaces.trinidadinternal.uinode.UIComponent
    UINode.render(UIComponentUINode.java:279) 

解决的办法是把带参数的那个方法改名。

4、从session里删除一个bean

  1. ValueBinding binding = FacesContext.getCurrentInstance()
    .getApplication().createValueBinding("#{MyBean}");  

  2. binding.setValue(context, null); 

上述内容就是JSF开发问题和解决是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。

文章标题:JSF开发问题和解决是怎样的
网站URL:https://www.cdcxhl.com/article4/gdoiie.html

成都网站建设公司_创新互联,为您提供关键词优化自适应网站网站营销App设计网站排名电子商务

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站托管运营