я должен написать составной компонент, который показывает форму входа и может быть использован с в следующем фрагменте кода:Внутренний компонент не найден, когда retargetMethodExpressions
<login:loginForm username="#{loginBean.username}"
password="#{loginBean.password}"
action="#{loginBean.login}"/>
Мой loginBean только простой сериализации @ViewScoped
@ManagedBean
с добытчиками, сеттеры и метод public String login()
.
Это мой составной компонент:
<body>
<cc:interface>
<cc:attribute name="username" required="true" type="java.lang.String" />
<cc:attribute name="password" required="true" type="java.lang.String" />
<cc:attribute name="action" targets="submit" required="true" method-signature="java.lang.String f()"/>
</cc:interface>
<cc:implementation>
<h3><span xml:lang="en">Login</span> Daten </h3>
<h:form>
<div class="formblock">
<fieldset>
<div>
<h:outputLabel value="Username" for="username"/>
<h:inputText id="username" value="#{cc.attrs.username}"/>
</div>
<div>
<h:outputLabel value="Passwort" for="password"/>
<h:inputSecret id="password" value="#{cc.attrs.password}"/>
</div>
</fieldset>
</div>
<div class="buttons">
<h:commandButton id="submit" value="Anmelden" accesskey="r" />
</div>
</h:form>
</cc:implementation>
</body>
Но, когда я открываю страницу login.xhtml (которая содержит login:loginForm
-snippet) в браузере, можно увидеть следующую ошибку в журнале молы:
Apr 29, 2012 11:59:49 PM org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage retargetMethodExpressions
SEVERE: Inner component submit not found when retargetMethodExpress
Но что это значит? Где ошибка в моем коде? Я уже пробовал некоторые другие решения для реализации атрибута action
, но безуспешно.
Только что увидел, что я использовал версию myfaces версии 2.0.4 вместо текущей версии 2.1.7. Итак, обновлен, и теперь ошибка исчезла. Но действие при этом не выполняется при нажатии кнопки команды. –