Я здесь, потому что у меня возникла очень странная проблема в моем приложении, которая заключается в следующем: у меня есть приложение электронной коммерции с JSF и EJB, и я пытаюсь заполнить форма с информацией пользователя. Проблема в том, что моя форма не отображается хорошо, когда есть зарегистрированный пользователь, и когда я не зарегистрирован, он отображается очень хорошо: O Я использую управляемый компонент (MB) для обработки, и он хранит объект учетной записи, представляющий учетная запись пользователя. Я использую jsf composite для создания моей формы и шаблонов для страниц xhtml.PrimeFaces inputText не отображается иногда
Кроме того, я получил эти предупреждения от GlassFish:
- ВНИМАНИЕ: Не удалось найти компонент с идентификатором ПгвЬЫатом в поле зрения.
- ВНИМАНИЕ: Не удается найти компонент с идентификатором lastName.
- ВНИМАНИЕ: Невозможно найти компонент с улицей ID.
- ВНИМАНИЕ: Невозможно найти компонент с идентификатором почтового кода в поле зрения.
- ПРЕДУПРЕЖДЕНИЕ. Невозможно найти компонент с городом-кандидатом.
Потому что они не визуализированы, я проверил его с помощью firebug.
Вот мой XHTML код страницы (/Form.xhtml доступны пользователю):
<ui:composition template="template/common/commonLayout.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:component="http://java.sun.com/jsf/composite/component">
<ui:define name="title">Formulaire</ui:define>
<ui:define name="content">
<ui:fragment rendered="#{dataManagedBean.connected}">
<component:FormValidateCartComponent title="Valider mon panier" first_name="yann" />
</ui:fragment>
<ui:fragment rendered="#{not dataManagedBean.connected}">
<component:FormValidateCartComponent title="Valider mon panier" first_name="NoName" />
</ui:fragment>
</ui:define>
</ui:composition>
Вот моя форма компонент:
<?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:h="http://java.sun.com/jsf/html"
xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<composite:interface>
<composite:attribute name="title" />
<composite:attribute name="first_name"/>
<!--ajouter des attributs pour le cas ou l'utilisateur est connecté -->
</composite:interface>
<composite:implementation>
<h:form id="form" class="span5 offset4">
<h2>#{cc.attrs.title}</h2>
<p:panel header="Adresse de Livraison">
<h:panelGrid id="gridpanel" columns="2" style="margin-bottom:10px">
<h:outputLabel for="firstName" value="Prenom : " />
<p:inputText id="firstName" value="#{cc.attrs.first_name}" binding="#{firstName}"/>
<h:outputLabel for="lastName" value="Nom : " />
<p:inputText id="lastName" binding="#{lastName}"/>
<h:outputLabel for="street" value="Rue : " />
<p:inputText id="street" binding="#{street}" />
<h:outputLabel for="postalCode" value="Code Postale : " />
<p:inputText id="postalCode" binding="#{postalCode}" />
<h:outputLabel for="city" value="Ville : "/>
<p:inputText id="city" binding="#{city}"/>
<h:outputLabel for="pbutton"/>
<h:commandButton id="pbutton" class="paypal-button"
action="Cart.xhtml"
actionListener="#{dataManagedBean.creatOrder(firstName.value,lastName.value,street.value,postalCode.value,city.value)}" />
</h:panelGrid>
</p:panel>
<ui:fragment rendered="#{!dataManagedBean.connected}">
<p:panel header="Connexion">
<h:panelGrid id="grid" columns="2" style="margin-bottom:10px">
<h:outputLabel for="login" value="Login : "/>
<p:inputText id="login" binding="#{login}" />
<h:outputLabel for="password" value="Mot de passe : "/>
<p:inputText id="password" binding="#{password}" />
<h:outputLabel for="accountCreationButton"/>
<h:commandButton id="accountCreationButton" value="Créer un compte" action="Cart.xhtml" actionListener="#{dataManagedBean.createAccount(login.value,password.value,dataManagedBean.creatOrder(firstName.value,lastName.value,street.value,postalCode.value,city.value))}"/>
</h:panelGrid>
</p:panel>
</ui:fragment>
</h:form>
</composite:implementation>
</html>
На данный момент я просто пытаюсь установите first_name, но, как сказано ранее, когда я зарегистрирован, каждый входной текст отсутствует в html-рендере. Как это возможно ? Когда я отключусь и получаю доступ к форме, все в порядке ... Спасибо за помощь, я действительно не знаю, почему это происходит ... Мои функции подключения и отключения просто получают по JPA запрос учетной записи с логином и паролем и отключением просто установив учетную запись в null в управляемом компоненте.
EDIT: Используя c: если мои проблемы решены! Почему, я не знаю ... Дайте мне знать, если у вас есть ключ :)
Managed Bean частичный код:
public void connect(String login, String password) {
account = client.connect(login, password);
}
public String disconnect() {
if (account != null) {
account = null;
}
return "index.xhtml?faces-redirect=true";
}
public boolean isConnected() {
return account != null;
}
Я тестировал с h: panelGroup, и проблема такая же ... Так что это не фрагмент UI, но я буду держать panelGroup :) – Ko2r
'' является компонентом пользовательского интерфейса, а не обработчиком тегов. Симптомы, которые вы описываете, соответствуют только обработчикам меток, например '', '' и т. Д. (Эти * не * имеют атрибут «rendered»). Поэтому этот «ответ» вводит в заблуждение и вряд ли разрешит конкретную проблему. –
BalusC
Хорошо, тогда проверьте код примера и сообщите, найду ли я что-нибудь, и еще одно, помните, что если вы используете составные компоненты, JSF добавит идентификатор к каждому компоненту в составном компоненте, поэтому вы должны проверить это для предупреждения «unabled to find id», @balusc, извините, я не знал, что ui: fragment - это UiComponent, добавленный мне сейчас. – rekiem87