Tôi đến với hành vi lạ của ứng dụng của tôi. Các nút lệnh bắt đầu gọi hành động vào lần truy cập thứ hai. Ngày đầu tiên - không có gì xảy ra. Nó có hiệu lực trên firefox và chromium, nhưng trong epiphany hoạt động như bình thường.Các nút lệnh gọi các hành động trên lần đẩy thứ hai (jsf)
môi trường của tôi: - ubuntu 11.04 - glassfish 3.1.1 - JSF 2.X - primefaces 3.2 - firefox 12.0 - hiển linh 2.30.6
Mã dụ:
<ui:define name="content">
<h:form id="form">
<h:panelGrid id="panelGrid" columns="3">
<h:outputText value="#{msg.fieUserName}:"/>
<h:inputText id="name" value="#{userBb.editedUser.username}" />
<h:message for="name" styleClass="error_msg"/>
<h:outputText value="#{msg.fieUserDescription}:"/>
<h:inputText id="description" value="#{userBb.editedUser.description}" />
<h:message for="description" styleClass="error_msg"/>
<h:outputText value="#{msg.fieUserPassword}:"/>
<h:inputSecret id="password" value="#{userBb.editedUser.password}" redisplay="true"/>
<h:message for="password" styleClass="error_msg"/>
<h:outputText value="#{msg.fieUserRights}:"/>
<p:selectOneMenu id= "rights"
value= "#{userBb.editedUserGroup}"
converter="#{pGroupOfUsersConverter}">
<f:selectItems
value ="#{groupDao.findAll()}"
var ="row"
itemLabel="#{groupDao.rightsDescription(row.id)}"
itemValue="#{row.groupname}"
>
</f:selectItems>
</p:selectOneMenu>
<h:message for="rights" styleClass="error_msg"/>
<h:outputText value="#{msg.fiePorofolioName}:" rendered="#{userBb.chosenNew}"/>
<h:inputText id="portName" value="#{userBb.portfelForNewUser.nazwa}" rendered="#{userBb.chosenNew}">
<f:validateBean disabled="true" />
</h:inputText>
<h:message for="portName" styleClass="error_msg" rendered="#{userBb.chosenNew}"/>
<h:outputText value="#{msg.fiePotofolioCurrency}:" rendered="#{userBb.chosenNew}"/>
<p:selectOneMenu id= "waldep"
value= "#{userBb.portfelForNewUser.walutaDepozytowa}"
converter="#{igConverter}"
rendered= "#{userBb.chosenNew}"
>
<f:selectItems value= "#{igDao.waluty}"
var= "row"
itemLabel="#{row.nazwa}"/>
</p:selectOneMenu>
<h:message for="waldep" styleClass="error_msg" rendered="#{userBb.chosenNew}"/>
</h:panelGrid>
<h:panelGrid columns="2">
<h:commandButton value="#{msg.butCreate}" action="#{userBb.formCreate()}" rendered="#{userBb.chosenNew}" />
<h:commandButton value="#{msg.butSave}" action="#{userBb.formEdit()}" rendered="#{!userBb.chosenNew}"/>
<h:commandButton value="#{msg.butBack}" action="#{userBb.formBack()}"/>
</h:panelGrid>
</h:form>
</ui:define>
Trong phương thức ví dụ này, userBb.formCreate() chỉ được gọi khi nhấp vào nút lệnh thứ hai mặc dù nút được hiển thị. Khi các trường không được điền chính xác hơn các thông điệp thích hợp xuất hiện bên cạnh chúng, nhưng ... chỉ trên nhấp chuột thứ hai! Lời khuyên nào?
Tôi kiểm tra các điểm từ: this advice, nhưng không tìm thấy giải pháp.
Bạn có chắc chắn 100% rằng nó không phải là điểm 5.. và 7 của câu trả lời đó? Bạn đã không rõ ràng disproven rằng trong mã của bạn – BalusC
Tôi đã kiểm tra nó ra.Đầu tiên tôi đảm bảo rằng kết xuất thuộc tính là ok, và tôi đặt nó bổ sung trong @PostConstruct init(). của biểu mẫu cho userForm và được thêm vào nút lệnh h: commandButton> Vẫn hoạt động đối với hành động thứ hai trong firefox và chromium và lần đầu tiên trong ephipany. Tôi sẽ cố gắng tìm hiểu, có lẽ tôi đã làm điều gì sai –
Zbyszek