7

I went through different sources like:

and it seems to be issue has been fixed in jsf 2.2.1, where as When I tried to use, I am facing issue, below are my configurations:

template.xhtml:

<!DOCTYPE html>
<html lang="#{languageBean.language}"
    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"
    xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
    xmlns:fn="http://xmlns.jcp.org/jsp/jstl/functions"
    xmlns:p="http://primefaces.org/ui" xmlns:o="http://omnifaces.org/ui"
    xmlns:of="http://omnifaces.org/functions">
<!-- Enables CTRL+SHIFT+D for activating Facelets debug window -->
<ui:debug />
<f:view locale="#{languageBean.language}" encoding="UTF-8" contentType="text/html">
<!-- Client templates can insert f:metadata here, and this will NOT show up in the showcase page source code -->
<ui:insert name="meta" />

<c:set var="contextPath" value="${pageContext.request.contextPath}"
    scope="application" />
<f:loadBundle var="messageResource" basename="MessageResource" />
<h:head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <meta http-equiv="X-UA-Compatible"
        content="EmulateIE8,IE=edge,chrome=1" />
    <meta http-equiv="pragma" content="no-cache" />
    <meta http-equiv="cache-control" content="no-cache" />
    <meta http-equiv="expires" content="0" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="description" content="Connect" />
    <meta name="keywords"
        content="timeline, 3d, css, css3, css-only, transitions, responsive, fluid" />
    <meta name="author" content="FriendsMirror" />
    <link rel="shortcut icon"
        href="#{request.contextPath}/Friendsmirror.ico" />
    <ui:insert name="js"/>  
    <h:outputStylesheet library="css" name="common.css" />
    <h:outputStylesheet library="css" name="main.css" />
    <ui:insert name="css"/>

    <ui:insert name="onloadScript"/>
    <title><ui:insert name="title">#{messageResource['connect.main.title.main.title']}</ui:insert></title>
</h:head>
<h:body>
<ui:insert name="content" />
</h:body>
</f:view>
</html>

Page:

<ui:composition template="/WEB-INF/templates/discussion_layout.xhtml"
    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"
    xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">

    <ui:define name="meta">
        <f:metadata>
            <f:viewParam name="sessionKey" value="#{discussionWrapperBean.sessionKey}" />
            <f:viewParam name="ref" value="#{discussionWrapperBean.ref}" />
            <f:viewParam name="pId" value="#{discussionWrapperBean.pId}" />
            <f:viewParam name="dId" value="#{discussionWrapperBean.discussionId}" />
            <f:viewParam name="dName" value="#{discussionWrapperBean.discussionName}" />
            <f:viewAction action="#{discussionWrapperBean.loadInitDiscussion}" onPostback="false" />
        </f:metadata>
    </ui:define>

    <ui:define name="title">
        <ui:fragment rendered="#{discussionWrapperBean.profileId != null}">
            #{discussionWrapperBean.userBean.firstName} #{discussionWrapperBean.userBean.lastName != null ? discussionWrapperBean.userBean.lastName: ''}#{discussionWrapperBean.pageTitleNotifications != null ? '(' : ''}#{discussionWrapperBean.pageTitleNotifications != null ? discussionWrapperBean.pageTitleNotifications : ''}#{discussionWrapperBean.pageTitleNotifications != null ? ')' : ''}
        </ui:fragment>
        <ui:fragment rendered="#{discussionWrapperBean.profileId == null}">
            #{messageResource['connect.discussion.title']}
        </ui:fragment>
    </ui:define>

    <ui:define name="content">

    </ui:define>

</ui:composition>

Maven:

<jsf.version>2.2.1</jsf.version>

<dependency>
    <groupId>com.sun.faces</groupId>
    <artifactId>jsf-api</artifactId>
    <version>${jsf.version}</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>com.sun.faces</groupId>
    <artifactId>jsf-impl</artifactId>
    <version>${jsf.version}</version>
    <scope>provided</scope>
</dependency>

In Ui I am getting issue like:The metadata component needs to be nested within a f:metadata tag. Suggestion: enclose the necessary components within <f:metadata>

even its not calling the <f:viewAction>

Any Suggestion or help will be appreciated.

One thing I noticed during deployment: INFO: Initializing Mojarra 2.2.0 ( 20130502-2118 https://svn.java.net/svn/mojarra~svn/tags/2.2.0@11930) for context /connectWAR

I am not sure why this is telling Mojarra 2.2.0, even though I have upgraded to 2.2.1

Community
  • 1
  • 1
Jayaram
  • 1,647
  • 17
  • 30
  • At the time when I posted the answer, the reported fix was for 2.2.1 but when I checked back the link the issue is still open and now the reported fix is for 2.2.2. I'm still getting this issue with JSF 2.2.1 from time to time so you're not alone. If the message bothers you that much then change the project stage. As for `f:viewAction` I haven't tried it since. I'll try again. – Andy Jul 30 '13 at 14:43
  • Thank you Andy...warning message can be ignored, but can't able to make work with , if you have any alternative rather than postConstruct will be helpful. – Jayaram Jul 30 '13 at 14:54
  • What are you using ? GlasshFish ? – Andy Jul 30 '13 at 15:11
  • @Andy Tomcat and tried with jboss6.x as well – Jayaram Jul 30 '13 at 15:15
  • Apologies for the late reply, I was getting familiar with `f:viewActions` and running some test. With JSF 2.2.1 I was able to get it working on a smaller sample. I'm also not seeing the warning message. So maybe your project is not pointing to the latest JSF version but I'm no expert at fixing this. Here's one link I would recommend http://stackoverflow.com/questions/4441713/migrating-from-jsf-1-2-to-jsf-2-0 – Andy Jul 30 '13 at 18:33
  • @Andy Thanks for your time...It was my mistake sorry, When I double check the logs, I came to know tomcat was picking jsf2.2.0 rather than 2.2.1 which was causing issue, finally solved thanks for your time and help..:) – Jayaram Jul 30 '13 at 19:52

1 Answers1

6

As to the false UI warning, this is caused by Mojarra issue 2868 and already fixed since 2.2.1.

As to the <f:viewAction> still not working on 2.2.1, another Mojarra bug with the since Java EE 7 introduced xmlns.jcp.org XML namespace domain is causing this trouble. In specifically Mojarra versions 2.2.0 and 2.2.1 the new XML namespace domain is not properly registered for all new JSF 2.2 specific tags which didn't exist in JSF 2.0/2.1, such as <f:viewAction>. In effects, the xmlns.jcp.org will give you in Mojarra 2.2.0/2.2.1 only the JSF 2.1 compatible tags back. This totally explains why the new JSF 2.2 <f:viewAction> didn't work for you.

You have 2 options:

  1. Use the "old" java.sun.com XML namespace domain instead. The new JSF 2.2 specific tags are properly registered there.

  2. Upgrade to at least Mojarra 2.2.2. This peculiar bug is fixed since that version. Mojarra is currently already at 2.2.4.

BalusC
  • 992,635
  • 352
  • 3,478
  • 3,452