Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf f:param值在commandButton和commandLink中都返回null_Jsf_Mojarra_Http Request Parameters - Fatal编程技术网

Jsf f:param值在commandButton和commandLink中都返回null

Jsf f:param值在commandButton和commandLink中都返回null,jsf,mojarra,http-request-parameters,Jsf,Mojarra,Http Request Parameters,我正在用jsf做一个简单的导航示例,因为我是一个初学者。当使用ManagedProperty访问managedBean中的f:param值时,我总是得到null home.xhtml <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://

我正在用jsf做一个简单的导航示例,因为我是一个初学者。当使用ManagedProperty访问managedBean中的f:param值时,我总是得到null

home.xhtml

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/facelets">
<head>
<title>JSF Tutorial!</title>
</head>
<body>
    <h3>Using JSF outcome</h3>
    <h:form>
        <h:commandButton action="#{navigation.show}" value="Page1">
            <f:param name="pageId" value="1" />
        </h:commandButton>
        <h:commandLink action="#{navigation.show}" value="Page2">
            <f:param name="pageId" value="2" />
        </h:commandLink>
        <h:commandLink action="#{navigation.show}" value="Home">
            <f:param name="pageId" value="3" />
        </h:commandLink>
    </h:form>
这是如何造成的,我如何解决?我使用的是jsf2.2 Mojarra 2.0.3。还有其他示例page1.xhtml和page2.xhtml,仅供我浏览
提前感谢

仔细查看XML名称空间前缀和URI,并与一本像样的JSF书籍/教程/参考资料中显示的内容进行比较:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/facelets">
另见:
  • -包含一个Hello World

与具体问题无关,Mojarra 2.0.3不是JSF 2.2。它是JSF2.0。还有一个相当老的实现,已经超过5年了。您可以在获得最新的Mojarra 2.2(目前为2.2.11)。之后,您可以将taglib URI中的域从
java.sun.com
更改为
xmlns.jcp.org

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">


谢谢@Balus C这是个愚蠢的错误。但是我想问你一个问题,比如我们不能改变前缀,比如
xmlns:yash=”http://java.sun.com/jsf/core“xmlns:gui=”http://java.sun.com/jsf/facelets“
这样吗?当然可以。然后只能使用
等。它只会使代码对其他遵守标准的JSF开发人员来说不那么明显和自我记录(因此更难阅读/维护/解释/修复错误)。换句话说,在公共领域这样做是一种不尊重。如果你想赢得别人的尊重,你最好不要这样做:)而使用“现代”EL,你可以这样做,在all@Kukeltje:服务器端EL方法参数和客户端HTTP请求参数具有完全不同的语义(a.o.解析时刻和HTTP有效负载中的ab/presence),通常不能随意交换。因此,这应该谨慎和理解地完成。@BalusC:如果目的是实际使用它们作为请求参数,也在URL中,我同意,但由于问题的性质,我怀疑这是有意的。
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">