我正在重新设计一个项目,我发现了我认为是一个错误,但我对这个错误源自何处感到困惑。
基本上我所要做的就是将一个URL参数传递给辅助bean。没有什么魔法,有很多不同的方法来实现这一目标。以下是我经常使用的那些;
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()
访问参数,然后从Map <f:metadata><f:viewParam name="id" value="#{backingBean.id}"/></f:metadata>
当我使用JSF 2.1与Glassfish 3+时,所有这三个都完美无缺。问题是我目前的项目是使用JSF 2.2和Glassfish 4,但这些都不起作用!无论我做什么,都不会设置参数,并且总是最终为null。
我不确定如何进一步追踪这一点。上一个项目的明显变化是我使用的是Glassfish 4而不是3,JavaEE 7而不是6,而JSF 2.2而不是2.1。 我没有收到任何可以发布的错误或例外情况。
我还可以测试任何其他内容或我可以尝试的任何其他解决方案。如果失败,任何人都知道任何可能导致此问题的报告错误或更改。最后有人可以重现这个错误吗?
答案 0 :(得分:4)
问题与命名空间有关!
如果您声明旧命名空间,一切正常;
xmlns:f="http://java.sun.com/jsf/core"
如果您声明新命名空间,则 将无效;
xmlns://xmlns.jcp.org/jsf/core
请注意,netbeans会自动填充您的命名空间。我真的希望这能节省一些时间!