j'ai un composant composite:composant composite JSF2 jets PropertyNotFoundException pour la méthode d'action
<composite:interface>
<composite:attribute name="actionMethod"
method-signature="java.lang.String action()" required="true" />
</composite:interface>
<composite:implementation>
<h:form>
<h:commandButton id="captureButton" value="#{msgs.capture}"
action="#{cc.attrs.actionMethod}" />
</h:form>
</composite:implementation>
et une page qui appelle ce que le composant composite:
<ezcomp:captureTitle actionMethod="#{saveDecisionsBean.captureTitle}" />
et un haricot qui contient l'action:
@Named(value="saveDecisionsBean")
@SessionScoped
public class SaveDecisionsBean extends BackingBeanBase {
...
public String captureTitle() {
...
}
}
Maintenant, voici mon problème. Lorsque j'essaie d'exécuter ceci, il est dit que SaveDecisionsBean n'a pas de propriété captureTitle. Par conséquent, je dois ajouter une méthode SaveDecisionsBean#getCaptureTitle()
. Quand je fais cela, ça fonctionne très bien. Pourquoi devrais-je définir cette méthode? Il est dit dans le <composite:attribute />
que c'est une méthode, et que c'est une action.
Voici le message d'erreur exact que je reçois:
javax.el.PropertyNotFoundException: /index.xhtml @54,86
actionMethod="#{saveDecisionsBean.captureTitle}":
The class 'com.example.persistence.SaveDecisionsBean_$$_javassist_209'
does not have the property 'captureTitle'.
(Pour des raisons de référencement:. Autres implémentations peuvent afficher le nom de la classe WeldClientProxy
)
comme commentaire, vous ne devez pas écrire @Named (valeur = "saveDecisionsBean") si c'est le même nom de la classe – Dejell
Il le fait par défaut dans NetBeans. –
En aparté, si ce qui précède aurait fonctionné, alors on pourrait aussi utiliser ' ', donc sans la 'méthode-signature'. Même problème cependant. –
Arjan