【问题标题】:jsf <f:metadata> tag not inserted on templatejsf <f:metadata> 标签未插入模板
【发布时间】: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 的,所以我猜是匹配的......

标签: jsf jsf-2


【解决方案1】:

我的项目代码(Mojarra 2.1.29)中有相同的示例,所以它一定是一个实现问题。您当前的 JSF 实现是在三年多前发布的,并且从那时起已经解决了很多问题。我建议您至少使用最新的 2.1.x,或者如果它是一个新项目,则切换到 2.2.x。此外,您正在使用 f:viewAction,这是 JSF 2.2 的特定功能,根本无法与您的 JSF 实现版本一起正常工作。

另请参阅:

【讨论】:

  • 我的错。我实际上正在使用svn.java.net/svn/mojarra~svn/tags/2.2.5@12761(我正在检查一个旧 jar,我不知道它在那里做了什么,但它没有被加载并且已经从项目中删除)。无论如何,很高兴知道它确实应该起作用。我会重新检查,看看我是否发现我错过了什么。谢谢! :-)
  • 不客气。用一个空的模板/模板客户端试试(只有参数验证),看看它是否有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-04
  • 2013-05-04
  • 2019-08-02
  • 2019-12-20
  • 1970-01-01
  • 2019-12-30
相关资源
最近更新 更多