Tengo un problema con mi código de costura y parece que no puedo entender lo que estoy haciendo mal. Que está haciendo en mi cabeza :) He aquí un extracto de la traza de la pila:Problema de costura: No se pudo establecer el valor del campo por reflexión
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field com.oobjects.sso.manager.home.PresenceHome.customerId to java.lang.String
Estoy tratando de obtener un conjunto de parámetros en la URL de mi pasado a uno de mis frijoles. Para ello, tengo la siguiente configuración en mi pages.xml:
<page view-id="/customer/presences.xhtml">
<begin-conversation flush-mode="MANUAL" join="true" />
<param name="customerId" value="#{presenceHome.customerId}" />
<raise-event type="PresenceHome.init" />
<navigation>
<rule if-outcome="persisted">
<end-conversation />
<redirect view-id="/customer/presences.xhtml" />
</rule>
</navigation>
</page>
Mi frijol comienza así:
@Name("presenceHome")
@Scope(ScopeType.CONVERSATION)
public class PresenceHome extends EntityHome<Presence> implements Serializable {
@In
private CustomerDao customerDao;
@In(required = false)
private Long presenceId;
@In(required = false)
private Long customerId;
private Customer customer;
// Getters, setters and other methods follow. They return the correct types defined above
}
Finalmente el enlace que utilizo para enlazar una sola página a la A continuación se ve así:
<s:link styleClass="#{selected == 'presences' ? 'selected' : ''}"
view="/customer/presences.xhtml" title="Presences" propagation="none">
<f:param name="customerId" value="#{customerId}" />
Presences
</s:link>
Todo esto parece funcionar bien. Cuando cierro el enlace de arriba en mi página, obtengo una URL que termina en algo como "? CustomerId = 123". Por lo tanto, el parámetro se está pasando por alto y es algo que se puede convertir fácilmente en un tipo largo. Pero por alguna razón, no lo es. He hecho cosas similares a esto antes en otros proyectos y funcionó entonces. Simplemente no puedo ver lo que no funciona ahora.
Si elimino el elemento de la declaración de mi página, puedo acceder a la página correctamente.
Entonces, ¿alguien tiene alguna idea?