我想从URL解析两个参数,但是当我在页面的标题中包含两个f:viewParam时,我收到一个错误: 元数据组件需要嵌套在f:metadata标记中。建议:将必要的组件包含在f:metadata
中网址示例: http://domain.com?email=blah@dom.com&key=4793e258-518f-432d-9af2-8d639a13757d
我正在使用JSF 2.2.6并且我尝试将名称空间(下面)从xmlns.jcp.org交换到java.sun.com,但这没有任何区别。
我的简化页面是:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<f:view>
<h:head>
<f:metadata>
<f:viewParam name="email" value="#{credentialsBacking.returnedEmail}"/>
<f:viewParam name="key" value="#{credentialsBacking.returnedActivationKey}"/>
</f:metadata>
</h:head>
<h:body>
</h:body>
</f:view>
</html>
由于
答案 0 :(得分:0)
嗯,我不知道为什么,但我从头开始重新创建项目,问题就消失了。奇怪的是我不得不使用xmlns的名称空间:f =“http://java.sun.com/jsf/core”而不是xmlns:f =“http://xmlns.jcp.org/jsf/core”来获取保存到bean的参数。
答案 1 :(得分:0)
这对我来说在Mojarra 2.2.6和Tomcat 7中没有问题:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<f:view>
<h:head>
<f:metadata>
<f:viewParam name="email" />
<f:viewParam name="key" />
</f:metadata>
</h:head>
<h:body>
#{email} - #{key}
</h:body>
</f:view>
</html>
这个也是:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<f:view>
<h:head>
<f:metadata>
<f:viewParam name="email" value="#{bean1.email}" />
<f:viewParam name="key" value="#{bean1.key}" />
</f:metadata>
</h:head>
<h:body>
#{bean1.email} - #{bean1.key}
</h:body>
</f:view>
</html>
@ManagedBean
@ViewScoped
public class Bean1 {
public Bean1() {
System.out.println("Bean created");
}
private String email;
private String key;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
System.out.println(email);
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
System.out.println(key);
}
}
将<f:metadata />
置于<html />
内的位置并不重要,参数设置正确。
看过上次的评论后,问题似乎与您的开发工具没有正确地将资源部署到服务器有关。清理工作区并检查正在复制的内容。