0

私たちの Web プロジェクトでは、JSF Myfaces、Primefaces 3.5 を使用しています。プロジェクト用に独自のprimefacesテーマを作成しました。

css/library などが原因であると思われる次の奇妙な問題を見つけました。

  • p:dataTable の複数選択チェックボックスは、奇妙な試行で機能します。つまり、ページの最初のロード時に選択が機能します。別のページにアクセスして戻ってくると、チェック ボックスの選択が機能しません。もう 1 ページにアクセスしてカムバックすると、再び機能します。動作しない場合は、ブラウザからページをリロードすると、再び動作します。(問題はすべてのブラウザで同じです)

  • p:ajaxStatus onstart js 関数は、最初の ajax 呼び出しに対してのみ起動します。以降のすべての呼び出しでは、このイベントは発生しません。ページをリロードすると、最初の ajax 呼び出しで再び起動して停止します。ajax 呼び出しにグローバル設定を設定していません。すべての呼び出しがデフォルトで global = true になっていると思います (問題はすべてのブラウザーで同じです)。

  • クロムの ap:barChart の場合、x 軸と y 軸のラベルは軸に収まりますが、ページをリロードすると、表示が調整されて正しくなり (Firefox で表示されるように)、セッション中にさらにリロードする必要はありません。他のページから前後に移動する場合でも。

このアプリケーションには上部にメニュー領域があり、auputPanel は ajax メニュー選択に基づいて ui:include を使用して更新されます。

これらの問題の原因と、リロード時に問題なく動作するように見える理由がわかりません。問題はどこにあるのでしょうか?

複数選択チェックボックスに関連する最初の問題のビュー コードは次のとおりです。

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
</h:head>
<h:body>
    <h:form id="dataForm">
        <p:messages id="tableMsgs" />
        <h:panelGroup>
            <p:dataTable value="#{usersBean.userDataModel}" var="user"
                id="userDataModel" rows="20" paginator="true"
                paginatorAlwaysVisible="false" editable="true"
                selection="#{usersBean.selectedUsers}"
                resizableColumns="false">

                <f:facet name="header">
                    <p:commandButton value="Flag User" process="@form"
                        action="#{usersBean.flagUser}"
                        icon="ui-icon-custom-arrow" iconPos="right"
                        update=":dataForm:tableMsgs"></p:commandButton>
                    <p:spacer width="10"></p:spacer>
                    <p:commandButton value="Delete User" process="@form"
                        icon="ui-icon-custom-arrow" iconPos="right" update="@form"
                        action="#{usersBean.deleteUser}">
                    </p:commandButton>
                </f:facet>

                <p:ajax event="rowEdit" listener="#{usersBean.onEdit}"
                    oncomplete="resetCSS()"
                    update=":dataForm:tableMsgs />
                <p:ajax event="rowEditCancel" oncomplete="resetCSS()" />

                <p:column selectionMode="multiple" style="width:15px;" />
                <p:column headerText="Department" sortBy="#{user.dept.name}"
                    style="white-space:pre-line;width:100px">
                    <h:outputText value="#{user.dept.name}"
                        style="white-space:pre-line;width:100px;display:block;">
                    </h:outputText>
                </p:column>
                <p:column headerText="UserName" sortBy="#{user.userLoginName}"
                    style="width:100px;">
                    <h:outputText value="#{user.userLoginName}"
                        style="width:100px;display:block;"></h:outputText>
                </p:column>
                <p:column headerText="Role" sortBy="#{user.role}"
                    style="width:100px;">
                    <p:cellEditor>
                        <f:facet name="output">
                            <h:outputText value="#{user.role}"
                                style="width:100px;display:block;"></h:outputText>
                        </f:facet>
                        <f:facet name="input">
                            <p:selectOneMenu value="#{user.role}" style="width:95px" rendered="#{user.enabled eq true}" >
                                <f:selectItems
                                    value="#{usersBean.rolesMap[user.dept.deptId]}"
                                    var="role" itemLabel="#{role}" itemValue="#{role}"></f:selectItems>
                            </p:selectOneMenu>
                            <h:outputText value="#{user.role}" rendered="#{user.enabled eq false}"/>
                        </f:facet>
                    </p:cellEditor>
                </p:column>
                <p:column headerText="Manager" style="width:100px;">
                    <p:cellEditor>
                        <f:facet name="output">
                            <h:outputText
                                value="#{user.usermanagerByUserId.userByManagerId.userLoginName}"
                                style="width:100px;display:block;"></h:outputText>
                        </f:facet>
                        <f:facet name="input">
                            <p:selectOneMenu rendered="#{user.enabled eq true}" 
                                value="#{usersBean.managerIdMap[user.userId]}"
                                style="width:95px;">
                                <f:selectItems
                                    value="#{usersBean.managerMap[user.dept.deptId]}"
                                    var="manager" itemLabel="#{manager.userLoginName}"
                                    itemValue="#{manager.userId}"></f:selectItems>
                            </p:selectOneMenu>
                            <h:outputText
                                value="#{user.usermanagerByUserId.userByManagerId.userLoginName}" rendered="#{user.enabled eq false}"/>
                        </f:facet>
                    </p:cellEditor>
                </p:column>
                <p:column headerText="Email" style="width:100px;">
                    <p:cellEditor>
                        <f:facet name="output">
                            <h:outputText value="#{user.email}"
                                style="width:100px;display:block;"></h:outputText>
                        </f:facet>
                        <f:facet name="input">
                            <p:inputText value="#{user.email}" style="width:95px;"
                                validatorMessage="Enter Valid Email" maxlength="100">
                                <f:validateRegex
                                    pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />
                            </p:inputText>
                        </f:facet>
                    </p:cellEditor>

                </p:column>
                <p:column headerText="Last Login" style="width:60px;">
                    <h:outputText value="#{user.lastLogin}"
                        style="width:60px;display:block;">
                        <f:convertDateTime pattern="dd/MM/yyyy"></f:convertDateTime>
                    </h:outputText>
                </p:column>
                <p:column headerText="Status" style="width:40px;">
                    <p:cellEditor>
                        <f:facet name="output">
                            <h:outputText value="Enable" rendered="#{user.enabled eq true}"></h:outputText>
                            <h:outputText value="Disable"
                                rendered="#{user.enabled eq false}"></h:outputText>
                        </f:facet>
                        <f:facet name="input">
                            <p:selectBooleanCheckbox value="#{user.enabled}" />
                        </f:facet>
                    </p:cellEditor>
                </p:column>
                <p:column headerText="Locked" style="width:40px;">
                    <p:cellEditor>
                        <f:facet name="output">
                            <h:outputText value="Locked" rendered="#{user.locked eq true}"
                                style="width:40px;display:block;" />
                            <h:outputText value="UnLocked" style="width:40px;display:block;"
                                rendered="#{user.locked eq false}"></h:outputText>
                        </f:facet>
                        <f:facet name="input">
                            <p:selectBooleanCheckbox value="#{user.locked}" />
                        </f:facet>
                    </p:cellEditor>
                </p:column>
                <p:column headerText="Edit" style="width:30px;">
                    <p:rowEditor>
                    </p:rowEditor>
                </p:column>
            </p:dataTable>

        </h:panelGroup>
    </h:form>
</div>

4

0 に答える 0