2013-01-31 1 views
0

자료 :popupPanel 부자에 표시되지 :에서 샘플에 DataTable을

http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=dataTable&sample=dataTableEdit&skin=blueSky

내가 조금 결과를 표시하는 버튼을 포함하는 XHTML 페이지와 CarBean에 수정했다. 결과는 예상대로 표시되지만 팝업 패널이 작동하지 않습니다 (즉, 팝업이 표시되지 않음). 내가 사용하는

소프트웨어 버전 :

richface 4.3.0 최종 GAE 1.7.2

참고 : 내 로컬 노트북 및 문제에 대한 언급에서 잘 작동 위 온라인 때 배포를 적용합니다. 여기

온라인 URL http://cloudenterpriseapps.appspot.com/public/test/testPopup5.jsf

어떤 도움?

[CarsBean.java] package test.faces.bean; 불을 지르고 사용

import java.io.Serializable; 
import java.math.BigDecimal; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.Collections; 
import java.util.Comparator; 
import java.util.Iterator; 
import java.util.List; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import javax.faces.bean.ViewScoped; 
import javax.faces.event.ValueChangeEvent; 
import javax.faces.model.SelectItem; 

import org.richfaces.demo.common.data.RandomHelper; 
import org.richfaces.demo.tables.model.cars.InventoryItem; 
import org.richfaces.demo.tables.model.cars.InventoryVendorItem; 
import org.richfaces.demo.tables.model.cars.InventoryVendorList; 

@ManagedBean(name = "carsBean2") 
@SessionScoped 
public class CarsBean2 implements Serializable { 
    /** 
    * 
    */ 
    private static final long serialVersionUID = -3832235132261771583L; 
    private static final int DECIMALS = 1; 
    private static final int CLIENT_ROWS_IN_AJAX_MODE = 15; 
    private static final int ROUNDING_MODE = BigDecimal.ROUND_HALF_UP; 
    private List<InventoryItem> allInventoryItems = null; 
    private List<InventoryVendorList> inventoryVendorLists = null; 
    private int currentCarIndex; 
    private InventoryItem editedCar; 
    private int page = 1; 

    private int clientRows; 

    public void switchAjaxLoading(ValueChangeEvent event) { 
     this.clientRows = (Boolean) event.getNewValue() ? CLIENT_ROWS_IN_AJAX_MODE : 0; 
    } 

    public void remove() { 
     allInventoryItems.remove(allInventoryItems.get(currentCarIndex)); 
    } 

    public void store() {  
     allInventoryItems.set(currentCarIndex, editedCar); 
    } 

    public List<SelectItem> getVendorOptions() { 
     List<SelectItem> result = new ArrayList<SelectItem>(); 
     result.add(new SelectItem("", "")); 
     for (InventoryVendorList vendorList : getInventoryVendorLists()) { 
      result.add(new SelectItem(vendorList.getVendor())); 
     } 
     return result; 
    } 

    public List<String> getAllVendors() { 
     List<String> result = new ArrayList<String>(); 
     for (InventoryVendorList vendorList : getInventoryVendorLists()) { 
      result.add(vendorList.getVendor()); 
     } 
     return result; 
    } 

    public List<InventoryVendorList> getInventoryVendorLists() { 
     synchronized (this) { 
      if (inventoryVendorLists == null) { 
       inventoryVendorLists = new ArrayList<InventoryVendorList>(); 
       List<InventoryItem> inventoryItems = getAllInventoryItems(); 

       Collections.sort(inventoryItems, new Comparator<InventoryItem>() { 
        public int compare(InventoryItem o1, InventoryItem o2) { 
         return o1.getVendor().compareTo(o2.getVendor()); 
        } 
       }); 
       Iterator<InventoryItem> iterator = inventoryItems.iterator(); 
       InventoryVendorList vendorList = new InventoryVendorList(); 
       vendorList.setVendor(inventoryItems.get(0).getVendor()); 
       while (iterator.hasNext()) { 
        InventoryItem item = iterator.next(); 
        InventoryVendorItem newItem = new InventoryVendorItem(); 
        itemToVendorItem(item, newItem); 
        if (!item.getVendor().equals(vendorList.getVendor())) { 
         inventoryVendorLists.add(vendorList); 
         vendorList = new InventoryVendorList(); 
         vendorList.setVendor(item.getVendor()); 
        } 
        vendorList.getVendorItems().add(newItem); 
       } 
       inventoryVendorLists.add(vendorList); 
      } 
     } 
     return inventoryVendorLists; 
    } 

    private void itemToVendorItem(InventoryItem item, InventoryVendorItem newItem) { 
     newItem.setActivity(item.getActivity()); 
     newItem.setChangePrice(item.getChangePrice()); 
     newItem.setChangeSearches(item.getChangeSearches()); 
     newItem.setDaysLive(item.getDaysLive()); 
     newItem.setExposure(item.getExposure()); 
     newItem.setInquiries(item.getInquiries()); 
     newItem.setMileage(item.getMileage()); 
     newItem.setMileageMarket(item.getMileageMarket()); 
     newItem.setModel(item.getModel()); 
     newItem.setPrice(item.getPrice()); 
     newItem.setPriceMarket(item.getPriceMarket()); 
     newItem.setPrinted(item.getPrinted()); 
     newItem.setStock(item.getStock()); 
     newItem.setVin(item.getVin()); 
    } 

    public String queryRec(){ 
     String result = ""; 
     synchronized (this) { 
      getAllInventoryItems(); 
     } 
     return result; 
    } 

    public String initQuery(){ 
     String result = ""; 
     synchronized (this) { 
      allInventoryItems = null; 
     } 
     return result; 
    } 
    public List<InventoryItem> getInventoryItems() { 
     return allInventoryItems; 
    } 

    public List<InventoryItem> getAllInventoryItems() { 
     synchronized (this) { 
      if (allInventoryItems == null) { 
       allInventoryItems = new ArrayList<InventoryItem>(); 

       for (int k = 0; k <= 5; k++) { 
        try { 
         switch (k) { 
          case 0: 
           allInventoryItems.addAll(createCar("Chevrolet", "Corvette", 5)); 
           allInventoryItems.addAll(createCar("Chevrolet", "Malibu", 8)); 
           allInventoryItems.addAll(createCar("Chevrolet", "Tahoe", 6)); 

           break; 

          case 1: 
           allInventoryItems.addAll(createCar("Ford", "Taurus", 12)); 
           allInventoryItems.addAll(createCar("Ford", "Explorer", 11)); 

           break; 

          case 2: 
           allInventoryItems.addAll(createCar("Nissan", "Maxima", 9)); 
           allInventoryItems.addAll(createCar("Nissan", "Frontier", 6)); 

           break; 

          case 3: 
           allInventoryItems.addAll(createCar("Toyota", "4-Runner", 7)); 
           allInventoryItems.addAll(createCar("Toyota", "Camry", 15)); 
           allInventoryItems.addAll(createCar("Toyota", "Avalon", 13)); 

           break; 

          case 4: 
           allInventoryItems.addAll(createCar("GMC", "Sierra", 8)); 
           allInventoryItems.addAll(createCar("GMC", "Yukon", 10)); 

           break; 

          case 5: 
           allInventoryItems.addAll(createCar("Infiniti", "G35", 6)); 
           allInventoryItems.addAll(createCar("Infiniti", "EX35", 5)); 

           break; 

          default: 
           break; 
         } 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
     } 
     return allInventoryItems; 
    } 

    public List<InventoryItem> createCar(String vendor, String model, int count) { 
     ArrayList<InventoryItem> iiList = null; 

     try { 
      int arrayCount = count; 
      InventoryItem[] demoInventoryItemArrays = new InventoryItem[arrayCount]; 

      for (int j = 0; j < demoInventoryItemArrays.length; j++) { 
       InventoryItem ii = new InventoryItem(); 

       ii.setVendor(vendor); 
       ii.setModel(model); 
       ii.setStock(RandomHelper.randomstring(6, 7)); 
       ii.setVin(RandomHelper.randomstring(17, 17)); 
       ii.setMileage(new BigDecimal(RandomHelper.rand(5000, 80000)).setScale(DECIMALS, ROUNDING_MODE)); 
       ii.setMileageMarket(new BigDecimal(RandomHelper.rand(25000, 45000)).setScale(DECIMALS, ROUNDING_MODE)); 
       ii.setPrice(new Integer(RandomHelper.rand(15000, 55000))); 
       ii.setPriceMarket(new BigDecimal(RandomHelper.rand(15000, 55000)).setScale(DECIMALS, ROUNDING_MODE)); 
       ii.setDaysLive(RandomHelper.rand(1, 90)); 
       ii.setChangeSearches(new BigDecimal(RandomHelper.rand(0, 5)).setScale(DECIMALS, ROUNDING_MODE)); 
       ii.setChangePrice(new BigDecimal(RandomHelper.rand(0, 5)).setScale(DECIMALS, ROUNDING_MODE)); 
       ii.setExposure(new BigDecimal(RandomHelper.rand(0, 5)).setScale(DECIMALS, ROUNDING_MODE)); 
       ii.setActivity(new BigDecimal(RandomHelper.rand(0, 5)).setScale(DECIMALS, ROUNDING_MODE)); 
       ii.setPrinted(new BigDecimal(RandomHelper.rand(0, 5)).setScale(DECIMALS, ROUNDING_MODE)); 
       ii.setInquiries(new BigDecimal(RandomHelper.rand(0, 5)).setScale(DECIMALS, ROUNDING_MODE)); 
       demoInventoryItemArrays[j] = ii; 
      } 

      iiList = new ArrayList<InventoryItem>(Arrays.asList(demoInventoryItemArrays)); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return iiList; 
    } 

    public int getCurrentCarIndex() { 
     return currentCarIndex; 
    } 

    public void setCurrentCarIndex(int currentCarIndex) { 
     this.currentCarIndex = currentCarIndex; 
    } 

    public InventoryItem getEditedCar() { 
     return editedCar; 
    } 

    public void setEditedCar(InventoryItem editedCar) { 
     this.editedCar = editedCar; 
    } 

    public int getPage() { 
     return page; 
    } 

    public void setPage(int page) { 
     this.page = page; 
    } 

    public int getClientRows() { 
     return clientRows; 
    } 

    public void setClientRows(int clientRows) { 
     this.clientRows = clientRows; 
    } 
} 

[testPopup5.xhtml]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:rich="http://richfaces.org/rich" 
    xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:c="http://java.sun.com/jsp/jstl/core"> 

<ui:composition> 
    <h:head> 
     <title>RichFaces Showcase</title> 
    </h:head> 
    <h:body> 
     <h:outputStylesheet> 
     a.no-decor>img { 
     border: none; 
     } 
    </h:outputStylesheet> 
     <a4j:status onstart="#{rich:component('statPane')}.show()" 
      onstop="#{rich:component('statPane')}.hide()" /> 

     <h:form> 
      <h:panelGrid columns="2"> 
       <a4j:commandButton id="search" action="#{carsBean2.queryRec}" 
        value="Search" render="table" /> 
       <a4j:commandButton id="reset" action="#{carsBean2.initQuery}" 
        value="Reset" type="reset" render="table" /> 
      </h:panelGrid> 
     </h:form> 

     <h:form> 
      <rich:dataTable value="#{carsBean2.inventoryItems}" var="car" 
       id="table" rows="5"> 
       <rich:column> 
        <f:facet name="header">Model</f:facet> 
        <h:outputText value="#{car.model}" /> 
       </rich:column> 
       <rich:column> 
        <f:facet name="header">Price</f:facet> 
        <h:outputText value="#{car.price}" /> 
       </rich:column> 
       <rich:column> 
        <a4j:commandLink styleClass="no-decor" render="editGrid" 
         execute="@this" oncomplete="#{rich:component('editPanel')}.show()"> 
         <h:graphicImage value="/images/icons/common/edit.gif" alt="edit" /> 
         <f:setPropertyActionListener target="#{carsBean2.editedCar}" 
          value="#{car}" /> 
        </a4j:commandLink> 
       </rich:column> 
      </rich:dataTable> 

      <rich:popupPanel id="statPane" autosized="true" rendered="true"> 
       <h:graphicImage value="/images/common/ai.gif" alt="ai" /> 
       Please wait... 
      </rich:popupPanel> 

      <rich:popupPanel header="Edit Car Details" id="editPanel"> 
       <h:panelGrid columns="3" id="editGrid"> 
        <h:outputText value="Model" /> 
        <h:outputText value="#{carsBean2.editedCar.model}" /> 
        <h:panelGroup /> 
        <h:outputText value="Price" /> 
        <h:outputText value="#{carsBean2.editedCar.price}" /> 
        <h:panelGroup /> 
       </h:panelGrid> 
       <a4j:commandButton value="Cancel" 
        onclick="#{rich:component('editPanel')}.hide(); return false;" />      
      </rich:popupPanel> 
     </h:form> 

    </h:body> 
</ui:composition> 
</html> 

, 내가 관리하는 로컬 및 온라인 GAE 버전 사이에 몇 DIFF을 발견 할 수 있습니다.

1) editPanel @ local은 'visibility hidden'에서 'display none'까지 스타일 단계를 변경 한 다음 편집 아이콘을 클릭하면 'display block'으로 변경됩니다.
그러나 GAE @ 여전히 아래

[로컬]

<div id="j_idt9:editPanel" style="visibility: hidden;"> 
<div id="j_idt9:editPanel" style="display: none;"> 
<div id="j_idt9:editPanel" style="display: block;"> 

[GAE를] 숨겨진 공개 '

<div id="j_idt9:editPanel" style="visibility: hidden;"> 

2)와 unchange 유지 editPanel, 로컬 버전의 테이블 태그

의 값을 포함

3) 파이어 버그의 스크립트 탭에 표시됩니다. 편집 링크를 클릭하면 로컬 버전이 다음과 같이 표시되고 표 값을 따릅니다. 경고 할 때 페이지가 처음로드 아래 http://cloudenterpriseapps.appspot.com/public/test/testPopup5.jsf

방법에 의해, GAE 표시 : 온라인 :

P/S 값으로하고 모든 테이블없이 그러나 온라인 버전을 표시합니다. 문제와 관련이 있는지 여부는 알 수 없습니다. [s ~ cloudenterpriseapps/0.365021621033424561] .: SystemId 알 수 없음; 라인 # 57; 컬럼 # 31; 실패 setMethod 메서드 호출

[FireBug 스크립트 탭, 로컬. 편집 링크]

<?xml version='1.0' encoding='UTF-8'?> 
<partial-response><changes><update id="j_idt9:editGrid"><![CDATA[<table id="j_idt9:editGrid"> 
<tbody> 
<tr> 
<td>Model</td> 
<td>Corvette</td> 
<td></td> 
</tr> 
<tr> 
<td>Price</td> 
<td>47405</td> 
<td></td> 
</tr> 
</tbody> 
</table> 
]]></update><update id="javax.faces.ViewState"><![CDATA[H4sIAAAAAAEUTEh...EUXAkFAAA]]></update></changes><extension id="org.richfaces.extension"><complete>RichFaces.$('j_idt9:editPanel').show();</complete><render>j_idt9:editGrid</render></extension></partial-response> 

[지르고 스크립트 탭, GAE를 클릭합니다. 편집 링크] 2.0에서 2로 업그레이드 JSF API 및 구현 항아리 후 해결

<?xml version='1.0' encoding='UTF-8'?> 
<partial-response><changes><update id="javax.faces.ViewState"><![CDATA[H4sIAAAAAAAAANVYbW....KBTUkFAAA]]></update></changes></partial-response> 
+0

로컬 실행 및 GAE 배포 하나에서 하나의 명백한 DIFF는 응답 헤더이다 로컬 <부분 응답><업데이트 ID = "j_idt9 : editGrid"> GAE <부분 응답>< update id = "javax.faces.ViewState"> 이 문제를 해결할 수없는 경우 해결 방법은 검색 패널과 결과를 2 개의 diff jsf 페이지로 분할하는 것입니다. – songjing

답변