Обновление данных JSF без обновления страницы - PullRequest
2 голосов
/ 13 сентября 2011

У меня есть поля ввода и данные на одной и той же странице, так что когда пользователь добавляет новые данные, данные должны добавляться в таблицу данных без обновления страницы.

Для этого я попробовал следующий код

xhtml part

<table border="0">
        <tr>
            <td width="700" height="100px">Customer Name: <h:inputText
                immediate="true" id="customername" autocomplete="false" value="#{salesBean.customerName}">

            </h:inputText> 

            </td>
        </tr>
        <tr>
            <td width="900" height="160px">
            <table border="1">
                <tr>
                    <td align="left">Product Name</td>
                    <td align="left">Rate</td>
                    <td align="left">Quantity</td>
                    <td align="left">Total Price</td>
                    <td align="left">Paid</td>
                    <td align="left">Date of Sales</td>
                    <td align="left"></td>
                </tr>
                <tr>
                    <td align="left"><h:inputText immediate="true"
                        id="productname" autocomplete="false" value="#{salesBean.productName}">


                    </h:inputText></td>
                    <td align="left"><h:outputText id="rate"
                        binding="#{salesBean.productRate}" /></td>
                    <td align="left"><h:inputText size="2"
                        onkeyup="return calculateTotalRate(event);" id="quantity" value="#{salesBean.quantity}"/></td>
                    <td align="left"><h:outputText id="totalprice" /></td>
                    <td align="left"><h:selectOneRadio  id="sor"
                        title="Select any one of the choice" value="#{salesBean.paidFlag}">
                        <f:selectItem id="si1" itemLabel="Yes" itemValue="yes" />
                        <f:selectItem id="si2" itemLabel="No" itemValue="no" />
                    </h:selectOneRadio></td>
                    <td align="left"><rich:calendar id="salesDate" value="#{salesBean.salesDate}"></rich:calendar></td>
                    <td align="center">
                    <h:commandButton value="Submit">                        
                        <a4j:support action="#{salesBean.submit}" reRender="table"></a4j:support>
                    </h:commandButton>
                    <h:commandButton value="Cancel" /></td>
                </tr>
            </table>`
            </td>
        </tr>
        <tr>
            <td>
                <h:outputText id="errormessage" style="display:inline-block;color:Red;width:300px;"/>
            </td>
        </tr>
        <tr>
            <td>
            <h:panelGroup id="panel">
                <rich:dataTable  var="data" id="table" binding="#{salesBean.table}" rendered="#{salesBean.salesHistoryRendered}">
                    <h:column>
                        <f:facet name="header">
                                <h:outputText value="Product Name"/>                                    
                                </f:facet>
                        <h:outputText value="#{data.productName}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                                <h:outputText value="Date of Sale"/>                                    
                                </f:facet>
                        <h:outputText value="#{data.dateOfSales}"/>
                    </h:column>
                    <h:column>
                    <f:facet name="header">
                                <h:outputText value="Is Paid?"/>                                    
                                </f:facet>
                        <h:outputText value="#{data.paidCheck}"/>
                    </h:column>
                    <h:column>
                    <f:facet name="header">
                                <h:outputText value="Quantity?"/>                                   
                                </f:facet>
                        <h:outputText value="#{data.quantity}"/>
                    </h:column>

                </rich:dataTable>
                <h:outputText id="text" binding="#{salesBean.checkValueChangeListener}"/>
                </h:panelGroup>
            </td>
        </tr>
        <tr>
            <td>


            </td>
        </tr>
    </table>

Пожалуйста, помогите мне решить эту проблему. Пожалуйста, обновите меня, если мой вопрос не ясен.

Я использую JSF 1.2 и Richfaces 3.3.2

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 14 сентября 2011

Вы пропустили атрибут события в a4j: support.Должно быть так (disableDefault = "true" для предотвращения стандартного поведения h: commandButton):

<h:commandButton value="Submit">                        
    <a4j:support event="onclick" disableDefault="true" action="#{salesBean.submit}" reRender="table"/>
</h:commandButton>

Или даже лучше так (будет делать то же самое, что и строки выше, но в стиле a4j)):

<a4j:commandButton value="Submit" action="#{salesBean.submit}" reRender="table"/>
0 голосов
/ 14 сентября 2011

«Без обновления страницы» означает AJAX.

RichFaces 3.3 поддерживает AJAX, и их документация объясняет, как его использовать в главах с 5.1 по 5.7 .

...