2013-03-19 1 views
2

Primefaces 캘린더 구성 요소를 사용했으며 양식 내부에서 작동하지 않습니다. 텍스트 필드를 클릭하면 팝업이 빨리 표시되고 사라집니다. outside h:form 팝업이 자체적으로 표시되지만 전체 구성 요소가 여전히 월/연도와 같이 작동하지 않습니다. 왜 제안 할 수 없습니까?Primefaces 캘린더 구성 요소가 양식 내부에서 작동하지 않습니다.

다음은 누구의 템플릿입니다

어떤 도움

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<ui:composition 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" 
template="/MasterPage/Master.xhtml"> 

<ui:define name="Search"> 

    <h:form id="advSearch" onmousemove="removeExtra()"> 

      <p:layout style="width:1218px;height:558px;" id="layout"> 



       <p:layoutUnit position="center" styleClass="resultDiv"> 

        <div class="advDiv"> 

         <div class="advHeader">Find documents That Have...</div> 
         <div class="advBody"> 

          <table> 
           <tr> 
            <td><h:outputText styleClass="advLabel" value="Subject"></h:outputText></td> 
            <td><h:inputText 
              value="#{advanceSearchController.subject}" 
              styleClass="txtfield" 
              onkeypress="if (event.keyCode == 13) { document.getElementById('advSearch:advButton').click(); return false; }"></h:inputText> 
            </td> 
           </tr> 


           <tr> 
            <td><h:outputText styleClass="advLabel" value="Signed By"></h:outputText></td> 
            <td><h:inputText 
              value="#{advanceSearchController.signBy}" 
              styleClass="txtfield" 
              onkeypress="if (event.keyCode == 13) { document.getElementById('advSearch:advButton').click(); return false; }"></h:inputText></td> 
           </tr> 
           <tr> 
            <td><h:outputText styleClass="advLabel" 
              value="Archived From"></h:outputText></td> 
            <td><p:calendar styleClass="txtfield" mode="popup" 
              navigator="true" yearRange="1900:2015" pattern="MM/dd/yyyy" 
              converter="CalendarDateStringConverter" 
              value="#{advanceSearchController.fromdate}" /></td> 
           </tr> 
           <tr> 
            <td><h:outputText styleClass="advLabel" value="To"></h:outputText></td> 
            <td><p:calendar styleClass="txtfield" mode="popup" 
              navigator="true" yearRange="1900:2015" pattern="MM/dd/yyyy" 
              converter="CalendarDateStringConverter" 
              value="#{advanceSearchController.todate}" /></td> 
           </tr> 
          </table> 
          <h:commandButton id="advButton" styleClass="btn" 
           value="Advanced Search" 
           action="#{advanceSearchController.advanceSearch}" 
           style="background-color:#FEAA41;background-image:none;color:white;font-weight:bold;"></h:commandButton> 
         </div> 
        </div> 

       </p:layoutUnit> 
      </p:layout> 
     </div> 

    </h:form> 

</ui:define> 
Master.xhtml 크게 감사하겠습니다 내 advSearch.xhtml facelet입니다.

+1

최소 구성 (내부 달력 만있는 양식)을 시도하고 여전히 작동하지 않는지 확인하십시오 . 결과를 여기에보고하십시오. –

+0

코드가 잘 보이지만, 한 가지, 나는 당신이 폼에 onmousemove = "removeExtra()"를 호출 한 JS 함수를 보았다. 팝업이 빨리 사라 졌다는 것을 명시한 바와 같이 그 다음에 사라진 것을 의미한다. 괜찮아요.하지만 다른 곳에서는 틀린 부분이 있습니다. 두 가지를 확인하십시오. (1) 캘린더 필드를 클릭 한 후 커서를 움직이면 필드가 사라집니다. 커서가 사라지면 클릭하고 커서가 움직이지 않으면 커서를 이동했는지 확인하십시오. JS 함수 onmouseover 이벤트가 마우스 움직임 문제 일 수 있습니다.) (2) removeExtra() 함수를 제거한 다음 – Despicable

+0

을 확인합니다. @Matt Handay는 h : head 및 h : body가있는 별도의 html 페이지와 동일한 양식을 실행합니다 Master.xhtml). 캘린더가 정상적으로 작동했습니다. –

답변

0

코드는 괜찮은 것처럼 보이지만, 한 가지 분명한 것은, 양식에서 onmousemove="removeExtra()"에 전화 한 JS 기능이 있다는 것입니다.
당신이 말했듯이, 팝업이 빨리 사라 졌다는 것을 의미하는 것처럼, 그 다음에 사라진 것을 의미합니다. 그것은 캘린더가 잘 작동하고 있지만 어딘가에 문제가 있다는 것을 보여줍니다.
두 가지를 확인하십시오
(1) 캘린더 필드를 클릭 한 후 커서를 움직이면 필드가 사라지므로 클릭 한 다음 사라지는 지 확인하십시오. 커서가 나타나지 않으면 커서를 이동 한 후 JS 함수를 호출했는지 확인하십시오. onmouseover 이벤트이므로 마우스 움직임 문제 일 수 있습니다)
(2)이 removeExtra() 함수를 제거한 다음 확인하십시오

+0

정말 고맙습니다. –

관련 문제