0

在我们的 Web 项目中,我们使用 JSF Myfaces,Primefaces 3.5。我们为该项目创建了自己的 primefaces 主题。

我发现以下奇怪的问题,我怀疑是由于 css/库等,

  • p:dataTable 上的多选复选框适用于奇数尝试。即在第一次加载页面时,选择有效。如果我访问另一个页面并返回,则选择复选框不起作用。如果我再访问一页并返回,它会再次起作用。当它不起作用时,如果我从浏览器重新加载页面,它会再次起作用。(所有浏览器的问题都是一样的)

  • p:ajaxStatus onstart js 函数仅在第一个 ajax 调用时触发。对于所有后续调用,不会触发此事件。如果我重新加载页面,它会再次触发第一个 ajax 调用并停止。我们没有对任何 ajax 调用设置任何全局设置,我假设所有调用默认为 global = true (所有浏览器的问题都是一样的)

  • 对于 chrome 上的 ap:barChart,x 和 y 轴标签落入轴中,但是当我重新加载页面时,显示已调整并正确(如在 firefox 中显示的那样),并且在会话期间不需要进一步重新加载,即使从其他页面来回导航。

我们的应用程序在顶部有一个菜单区域,并且 ouputPanel 使用 ui:include 根据 ajax 菜单选择进行更新。

我不确定是什么导致了这些问题,以及为什么在重新加载时一切似乎都正常。问题可能出在哪里?

与多选复选框相关的第一个问题的查看代码如下。

<?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