2012-09-13 11 views
1

onChange 이벤트를 트리거하는 inputText 필드에서 typeahead가 활성화되었습니다. 페이지가 일정 기간 동안 새로 고쳐지지 않으면 테스트가 제대로 작동하지 않습니다 (테스트에서는 1 시간 후에 작동이 멈추지 만 그 이하 일 수 있습니다). 페이지를 새로 고침하면 문제가 완전히 해결됩니다.inputText onchange 이벤트가 비활성 후 호출되지 않음

inputText 필드의 코드는 다음과 같습니다.

<xp:inputText id="quickSelectEntry" style="width:170px;"> 
    <xp:this.dojoAttributes> 
     <xp:dojoAttribute name="placeHolder" value="Enter name"> 
     </xp:dojoAttribute> 
    </xp:this.dojoAttributes> 
    <xp:typeAhead mode="none" minChars="2" ignoreCase="true" 
     var="searchValue" valueMarkup="true"> 
     <xp:this.valueList><![CDATA[#{javascript:return   nameTypeAhead(searchValue)}]]></xp:this.valueList> 
       </xp:typeAhead> 

       <xp:eventHandler event="onchange" submit="true" 
        refreshMode="norefresh"> 
        <xp:this.action> 
         <xp:actionGroup> 
          <xp:executeScript> 
           <xp:this.script><![CDATA[#{javascript:var searchVal:string = getComponent("quickSelectEntry").getValue(); 
if (searchVal.substr(0,1).equals("?")) { 
    context.redirectToPage("xCheckSecurityGroup.xsp?group=" + searchVal.substr(1)); 
    return false; 
} else { 
    var doc:NotesDocument = quickLookupView.getDocumentByKey(searchVal, true); 
    if (null != doc) { 
     viewScope.lookupKey = doc.getUniversalID(); 
     viewScope.lookupForm = doc.getItemValueString("form"); 
     return true; 
    } else { 
     viewScope.lookupKey = "" 
     viewScope.lookupForm = "" 
     return false; 
    } 
} 
]]></xp:this.script> 
          </xp:executeScript> 
          <xp:actionGroup> 
           <xp:this.condition><![CDATA[#{javascript:viewScope.lookupKey != ""}]]></xp:this.condition> 

           <xp:openPage target="openDocument" 
            documentId="#{javascript:return viewScope.lookupKey}"> 
            <xp:this.name><![CDATA[#{javascript:return "x" + viewScope.lookupForm + ".xsp" }]]></xp:this.name> 
           </xp:openPage> 
          </xp:actionGroup> 
     </xp:actionGroup> 
    </xp:this.action> 
</xp:eventHandler> 

지금까지 나는 전체에 없음에서 선행 입력 모드를 설정 한, 아니 기쁨으로 포함하는 패널의 시간 제한 부분 새로 고침을 수행 시도했습니다. 차이 없음.

10 분마다 페이지를 새로 고치는 것 이외에도 문제를 일으키는 다른 것이 있습니까? FYI 실제의 선구자가 올바르게 작동하고 있습니다. 즉, 발사를 멈추는 onchange 이벤트입니다.

답변

0

월 Application Properties (Xpages 탭으로 이동)를 확인하고 싶습니다. 여기서 응용 프로그램과 데이터베이스의 세션 시간 초과를 설정할 수 있습니다. 이것들이 공백이라면 나는 그들이 보통 30 분인 서버에 디폴트 할 것이라고 생각한다.

V/R,

케빈

+0

keepSessionAlive가 작동하지 않으면 아래의 Howard가 설명한대로 강제 새로 고침과 결합 된 다음 옵션이됩니다. – ajcooper

1

문제는 XSP 세션이 (서버 설정에 따라) 시간 초과된다는 것입니다. 세션을 유지하는 방법에 대한 권장 사항은이 답변을 참조하십시오. How do I refresh page automatically when partial refresh doesn't work?

+0

우리는 모든 페이지에 ExtLib keepSessionAlive 컨트롤을 사용하지만, 도움이되지 않았다 - 페이지 domlog에 많은 성공적인 핑이있다하더라도, 일부 유휴 시간 후 작동하지 않습니다 해당 페이지의 ... –

+0

이것은 실제로 런타임의 버그 일 수 있습니다. 위의 유스 케이스를 살펴보고 필요할 경우 이관합니다. –

+0

감사합니다. @PaulHannan, 자세한 내용은 저에게 문의하십시오. 정말 사용자를 귀찮게합니다. –

1

본인도이 사실을 확인했습니다. 30 분마다 페이지를 다시로드하기 위해 메타 새로 고침 태그를 삽입했습니다. 그것은 효과가있는 유일한 방법이었습니다. 일어날 것으로 보인다 무엇

하워드

+0

부작용이 있습니까? 내가 생각하기에이 솔루션의 문제점 : 편집 모드의 유휴 상태 - 사용자가 리디렉션 후 저장하지 않은 데이터를 잃어 버린다. 내가 잘못? –

+0

보이지 않는 것처럼, 값은 여전히 ​​컨트롤에 바인딩되어 있습니다. http://www.tlcc.com/admin/tlccsite.nsf/DeveloperView.xsp – Howard

+0

왼쪽의 컨트롤을 어떻게 바인딩합니까? 그들의 가치는 새로운 탭에서도 지속되는 것처럼 보입니다. 따라서 표준 상황이 아닙니다. 내 말은, 당신이 당신의 페이지를 리다이렉트하면 (GET, POST가 아님) 데이터 소스에 대한 바인딩을 잃어 버릴 것이라고 나는 믿는다. –

2

는 서버의 웹 세션은 그대로이지만 XPages 세션이 손실된다는 점이다.

XPage의 맨 아래에 다음을 추가하십시오. 당신의 설정 (밀리 초 단위) (300000 = 300 초 = 5 분)에 기초하여 DIV를 사전에 새로 고치십시오. 3.5 시간.

데이터베이스의 응용 프로그램 속성에 설정된 세션 제한 시간보다 최소 1 분 이상 값을 설정해야합니다.

<xp:div id="keepSessionAlive"></xp:div> 
<xp:scriptBlock id="scriptBlock1"> 
    <xp:this.value> 
    <![CDATA[ 
     XSP.addOnLoad(function(){ 
      setInterval(function(){ 
       XSP.partialRefreshPost("#{id:keepSessionAlive}", {}); 
      }, 300000) 
     })]]> 
    </xp:this.value> 
</xp:scriptBlock> 

이 불필요하게 대역폭을 낭비하고도 잘 브라우저가 관리하지 않는 IE의 RAM 사용량을 부풀게 것 같은 짧은 재생 시간을 설정하지 마십시오. 기본적으로 살아 유휴 컴퓨터의 세션을 유지하여 사용자의 지식없이 납치 할 열어두고 - -

이 동시에있는 보안 문제가 있음을 이해

은 시간 초과 지점의 일부입니다

관련 문제