Java JSF EL绑定参数适用于Glassfish 3,但不适用于JBoss 6

Java JSF EL绑定参数适用于Glassfish 3,但不适用于JBoss 6,java,jsf-2,jboss6.x,Java,Jsf 2,Jboss6.x,以下是例外情况: 10:23:50325严重 [javax.enterprise.resource.webcontainer.jsf.context] http-/127.0.0.1:18080-1 javax.faces.component.UpdateModelException: javax.el.PropertyNotFoundException:/auth/common/textSyncLockRow.xhtml @29,45值={customerMaintenanceView.get

以下是例外情况:

10:23:50325严重 [javax.enterprise.resource.webcontainer.jsf.context] http-/127.0.0.1:18080-1 javax.faces.component.UpdateModelException: javax.el.PropertyNotFoundException:/auth/common/textSyncLockRow.xhtml @29,45值={customerMaintenanceView.getSyncLockInfotableName, fieldName.synced}:类 'com.jeldwen.cdm.view.CustomerMaintenanceView$Proxy$\u$$\ uWeldClientProxy' 没有属性“getSyncLockInfo”

在javax.faces.component.UIInput.UpdateMemodeLuiInput.java:857 在javax.faces.component.UIInput.processUpdatesUIInput.java:739 位于javax.faces.component.UIComponentBase.processUpdatesUIComponentBase.java:1244 位于javax.faces.component.UIComponentBase.processUpdatesUIComponentBase.java:1244 位于javax.faces.component.UIComponentBase.processUpdatesUIComponentBase.java:1244 位于javax.faces.component.UIComponentBase.processUpdatesUIComponentBase.java:1244 位于javax.faces.component.UIComponentBase.processUpdatesUIComponentBase.java:1244 位于javax.faces.component.UIComponentBase.processUpdatesUIComponentBase.java:1244 位于javax.faces.component.UIComponentBase.processUpdatesUIComponentBase.java:1244 位于org.primefaces.component.panel.panel.ProcessUpdatePanel.java:288 位于javax.faces.component.UIComponentBase.processUpdatesUIComponentBase.java:1244 位于javax.faces.component.UIComponentBase.processUpdatesUIComponentBase.java:1244 在org.primefaces.util.ComponentUtils.processUpdateOfficesandChildsComponentutils.java:444 位于org.primefaces.component.tabview.tabview.processUpdatesTabView.java:377 位于javax.faces.component.UIForm.processUpdatesUIForm.java:281 位于javax.faces.component.UIComponentBase.processUpdatesUIComponentBase.java:1244 位于javax.faces.component.UIComponentBase.processUpdatesUIComponentBase.java:1244 位于org.primefaces.component.layout.layout.processUpdatesLayout.java:240 位于javax.faces.component.UIComponentBase.processUpdatesUIComponentBase.java:1244 位于javax.faces.component.UIComponentBase.processUpdatesUIComponentBase.java:1244 位于javax.faces.component.UIViewRoot.processUpdatesUIViewRoot.java:1223 位于com.sun.faces.lifecycle.UpdateModelValuesPase.ExecuteUpdateModelValuesPase.java:78 位于com.sun.faces.lifecycle.Phase.doPhasePhase.java:101 在com.sun.faces.lifecycle.LifecycleImpl.executeLifecycleImpl.java:118 位于org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.executeDeltaSpikeLifecycleWrapper.java:75 位于javax.faces.webapp.FacesServlet.servicefaceservlet.java:593 位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicationFilterChain.java:295 位于org.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilterChain.java:214 位于org.apache.catalina.core.StandardWrapperValve.invokeStandardWrapperValve.java:230 位于org.apache.catalina.core.StandardContextValve.invokeStandardContextValve.java:149 位于org.apache.catalina.authenticator.AuthenticatorBase.invokeAuthenticatorBase.java:499 位于org.jboss.as.web.security.SecurityContextAssociationValve.invokeSecurityContextAssociationValve.java:169 位于org.apache.catalina.core.StandardHostValve.invokeStandardHostValve.java:145 位于org.apache.catalina.valves.ErrorReportValve.invokeErrorReportValve.java:97 位于org.apache.catalina.core.StandardEngineValve.invokeStandardenginievalve.java:102 位于org.apache.catalina.connector.CoyoteAdapter.serviceCoyoteAdapter.java:336 位于org.apache.coyote.http11.Http11Processor.processHttp11Processor.java:856 位于org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processHttp11Protocol.java:653 位于org.apache.tomcat.util.net.JIoEndpoint$Worker.runJIoEndpoint.java:926 java:745

原因: javax.el.PropertyNotFoundException:/auth/common/textSyncLockRow.xhtml @29,45值={customerMaintenanceView.getSyncLockInfotableName, fieldName.synced}:类 'com.jeldwen.cdm.view.CustomerMaintenanceView$Proxy$\u$$\ uWeldClientProxy' 没有属性“getSyncLockInfo”

位于com.sun.faces.facelets.el.TagValueExpression.setValueTagValueExpression.java:133 在javax.faces.component.UIInput.UpdateMemodeLuiInput.java:822

来自xhtml的代码:

<p:selectBooleanCheckbox 
    disabled="#{!customerMaintenanceView.isLockEnabled('corpcust', 'name')}" 
    value="#{customerMaintenanceView.getSyncLockInfo('corpcust', 'name').locked}" 
    onchange="flagDirty()">
</p:selectBooleanCheckbox>
来自会话范围控制器的代码:

public CdmSyncInfo getSyncInfo(String tableName, String fieldName) {
CdmSyncInfo value = new CdmSyncInfo();
    for (CdmSyncInfo info : tdrWorking.getCustomerSyncInfos()) {
        if (StringUtils.equalsIgnoreCase(tableName, info.getTableName()) && StringUtils.equalsIgnoreCase(fieldName, info.getFieldName())) {
            value = info;
            break;
        }
    }
    return value;
}

问:这在Glassfish 3上运行非常好,我需要做什么来清除JBoss EAP 6.2上出现的异常?

检查以确保EL版本与JBoss中分发的JSF版本一起提供,是El 2.2,尽管El解析器似乎对禁用的表达式没有问题。感谢kolossus 20,我确实通过创建一个包含160多个同步和锁定字段的模型来确认它是El 2.2。所以这一行:value={customerMaintenanceView.getSyncLockInfo'corpcust','name'.l ocked}变成:value={customerMaintenanceView.corporateSyncLock.legalNameLocked}
public CdmSyncInfo getSyncInfo(String tableName, String fieldName) {
CdmSyncInfo value = new CdmSyncInfo();
    for (CdmSyncInfo info : tdrWorking.getCustomerSyncInfos()) {
        if (StringUtils.equalsIgnoreCase(tableName, info.getTableName()) && StringUtils.equalsIgnoreCase(fieldName, info.getFieldName())) {
            value = info;
            break;
        }
    }
    return value;
}