2014-09-22 21 views
0

這工作:JSF <f:metadata>標籤不插入模板

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> 

爲什麼?

+0

這取決於你的JSF庫的版本,我目前使用的鑽嘴魚科JSF API實現2.1.2的例子庫 – Dunken 2014-09-22 12:56:26

+0

。 JavaDoc用於2.1.X,所以這是一個匹配,我猜... – NotGaeL 2014-09-22 15:01:44

回答

1

我在我的項目代碼(Mojarra 2.1.29)中有同樣的例子,所以它必須是一個實現問題。您當前的JSF實施已於三年前發佈,並且自那時起已解決了許多問題。我建議你至少使用最新的2.1.x版本,或者如果它是一個新項目,則切換到2.2.x。另外,您使用的是f:viewAction,這是一個JSF 2.2特定功能,並且不能正確使用您的JSF實現版本。

參見:

+1

我的不好。我實際上使用https://svn.java.net/svn/mojarra~svn/tags/[email protected](我正在檢查一箇舊的jar,我不知道在那裏做了什麼,但它不是正在加載並已從項目中刪除)。無論如何,很高興知道它確實應該工作。我會重新檢查一下,看看我是否抓住了我缺少的東西。謝謝! :-) – NotGaeL 2014-09-23 12:38:40

+1

不客氣。嘗試一個空的模板/模板客戶端(只有參數驗證),看看它是否工作。 – 2014-09-23 14:59:43