【发布时间】:2014-11-16 04:40:31
【问题描述】:
这行得通:
template.xhtml:
<?xml version="1.0" encoding="UTF-8"?>
<!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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<f:view contentType="text/html" encoding="UTF-8" locale="#{LanguageBean.localeLanguage}">
<f:metadata>
<f:viewParam name="token" value="#{changePasswordBean.token}"/>
<f:viewAction action="#{changePasswordBean.checkValidToken}" />
</f:metadata>
但这(基于this example)没有(令牌始终为空):
template.xhtml:
<?xml version="1.0" encoding="UTF-8"?>
<!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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<f:view contentType="text/html" encoding="UTF-8" locale="#{LanguageBean.localeLanguage}">
<ui:insert name="metadata" />
page.xhtml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition template="template.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
>
<html>
<ui:define name="metadata">
<f:metadata>
<f:viewParam name="token" value="#{changePasswordBean.token}"/>
<f:viewAction action="#{changePasswordBean.checkValidToken}" />
</f:metadata>
</ui:define>
为什么?
【问题讨论】:
-
这取决于你的jsf库和示例库的版本
-
我目前正在使用 Mojarra JSF API 实现 2.1.2。 JavaDoc 是针对 2.1.X 的,所以我猜是匹配的......