El valor de viewParam no está establecido en el bean ViewScoped

Lo siento, probablemente otra pregunta realmente básica. En mi bean ViewScoped, un 'viewParam' parece que se está configurando, pero cuando llego a usarlo, el valor es nulo. Puse un punto de interrupción en el setter (setEventId ()) y obtiene el valor, pero en el método especificado por mi preRenderView, desaparece, por lo que no puedo cargar el objeto de evento que estoy tratando de recuperar.

Esto funcionaba bien cuando mi bean era RequestScoped, pero descubrí que en un POST y un error de validación posterior, todos mis detalles se perdieron y leí que ViewScoped era la forma de solucionar este problema.

Me actualicé a Mojarra 2.1.7 porque pensé que podría ser un error, y de hecho hay un "error crítico" en su JIRA, corregido en 2.1.7, pero verifiqué en los registros de Glassfish que estaba usando el más nuevo versión, y todavía tengo el mismo problema:http://java.net/jira/browse/JAVASERVERFACES-2266

Por favor, ayuda, aquí está mi bean (he intentado con y sin la anotación 'ManagedProperty')

@ViewScoped
@Named
public class EventController extends AbstractController {

    private static final Logger logger = Logger.getLogger("EventController");

    /**
     * Request param managed property
     */
    @ManagedProperty(value="#{param.eventId}")
    private Long eventId;                

    private Event event = new Event();

    /**
     * The event dao
     */
    @Inject
    private EventDao eventDao;    

    /**
     * Load the event (requires eventId has a value)
     * @return 
     */
    public void loadEvent() {
        event = eventDao.find(eventId);
    }    

    /**
     * @return the eventId
     */
    public Long getEventId() {
        return eventId;
    }

    /**
     * @param eventId the eventId to set
     */
    public void setEventId(Long eventId) {
        this.eventId = eventId;
    }   
}

Así es como estoy construyendo el enlace en la página 'listEvents'

<h:link value="Full details" outcome="/calendar/viewEvent" includeViewParams="true">
<f:param name="eventId" value="#{calendarController.event.eventId}" />
</h:link>

Y aquí está la página que necesita la propiedad eventId

<?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:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core">

    <body>

        <ui:composition template="/WEB-INF/templates/standardTemplate.xhtml">

    <f:metadata>
        <f:viewParam name="eventId" value="#{eventController.eventId}"/>
        <f:event type="preRenderView" listener="#{eventController.loadEvent}" />
    </f:metadata>            

            <ui:define name="content">      

                <h1>Event details for: #{eventController.event.title}</h1>
                <h:form>
                    <p:messages/>                                               

                    <p:panelGrid style="margin-top:20px">  
                        <f:facet name="header">  
                            <p:row>  
                                <p:column colspan="4">Event details</p:column>  
                            </p:row>  
                        </f:facet>  

                        <p:row>  
                            <p:column>
                                Title
                            </p:column>  
                            <p:column colspan="3">
                                <p:inputText value="#{eventController.event.title}" size="49"/>
                                <h:inputHidden id="eventId" value="#{eventController.event.eventId}"/>
                            </p:column>   
                        </p:row>                                                                                                   
                </h:form>                                
            </ui:define>
        </ui:composition>            
    </body>
</html>

Respuestas a la pregunta(2)

Su respuesta a la pregunta