最近需要一个jsf的组件,,其实,前段时间用过一次,把它放进dataTable里了,一切正常。jbpm里自带的里也是这样写的。昨天重写了这段代码,发现一直报错:java.lang.NullPointerException
com.sun.faces.renderkit.html_basic.CommandLinkRenderer.getHiddenFieldName(CommandLinkRenderer.java:136),上网查 找到一篇外文说<h:commandlink>和dataTable放在一起有debug,解决方法是把后台的Bean中的范围改成session等,但jsf官方文档里强烈推荐request范围。 还有许多办法我都试了,还是不行,愤怒之极。这时一名叫方舟的网友,给我传了一段文章: 检查代码发现commandLink出错是因为找不到Form出错(这是一个BUG).也就是说,commandLink只能嵌套到<h:form>中使用
经查,没有form可正常使用<h:outputlink>,但怪异的是它使用value作为超链接,而夹在</h:outputlink>中间的文字作为提示
不幸的是,实践检验表明,<h:outputlink>工作不正常,输出结果:将文字甩在了之前,根本不能实现超链接。
** 看来只好使用form了。否则commandLink/commandButton的action也不知道作用到哪里?</h:outputlink></h:form></h:commandlink>
加了
后没有错误了,现在变的郁闷之极了。为什么前几天没有加 做的可以啊,jbpm自带的例子也没这样做,但运行正常,这个问题谁能给我答案呢,估计只有jsf的作者知道吧,没有成熟,干吗发出来?就用了jsf里这一个组件,就有个Big bug ,浪费了我许多宝贵的时间》