2009-07-23 2 views
1

У меня есть следующий освежающий таймер:Struts2 Sx: DIV с таймером, игнорируя преднагрузки = «истинные»

<s:url id="getDeployQueue" action="deploymentQueue" > 
    <s:param name="readonly" value="readonly" /> 
</s:url> 

<sx:div id="deploymentQueue" href="%{#getDeployQueue}" errorText="Oh wait, I couldn't get the queue right now!" 
    formId="queueForm" executeScripts="false" preload="true" listenTopics="refreshqueue" 
    autoStart="true" updateFreq="8000" startTimerListenTopics="/startDeployQueue" stopTimerListenTopics="/stopDeployQueue" /> 

У меня есть проблема в том, что он ждет 8000 Миллиса перед загрузкой контента, даже если у меня есть преднагрузки =» правда". После этого он функционирует так, как я ожидал, перезагружая контент каждые 8000 миллисов. Удаление updateFreq = "8000" заставляет div предварительно загружаться, но мой таймер не запускается.

Ожидается ли такое поведение? Если так, то есть обходной путь?

Я использовал, чтобы обойти это, вставив html внутри тега sx: div, но Firefox 3.5 теперь выдает ошибки безопасности с помощью этого подхода из-за html, содержащего форму, и ajax пытается записать поверх нее ,

+0

После долгих поисков он, кажется, знают ошибка Однако ваше решение прекрасно работает, спасибо.! – Accollativo

ответ

2

Кажись, как никто не имеет ответа, я работал вокруг этого со следующим

<sx:div id="combinedQueue" href="%{#getCombinedQueue}" errorText="Awww Snap I can't get the queue" formId="queueForm" executeScripts="false" 
    autoStart="false" updateFreq="15000" preload="false" showLoadingText="false" listenTopics="refreshqueue" startTimerListenTopics="/startDeployQueue" stopTimerListenTopics="/stopDeployQueue"> 

    <noscript> 
     <tiles:insertAttribute name="queue" /> 
    </noscript> 

    <!-- Preload the deployment queue, this is done to avoid security precautions new to firefox 3.5 --> 
    <sx:div id="combinedQueuePreload" href="%{#getCombinedQueue}" errorText="Awww Snap I can't get the queue" 
     executeScripts="false" preload="true" showLoadingText="false" afterNotifyTopics="/startDeployQueue" /> 

</sx:div> 

Это, казалось, терпит неудачу с исключением безопасности в последнем светлячок. Я работал над этим путем дублирования моего кода :(Я предварительно загружаю вложенный sx: div, и когда это будет завершено, он уведомляет div о запуске таймера. Очень странно.

0

Без использования трюка вы можете использовать Struts2 JQuery плагин, вам просто нужно импортировать библиотеку и изменить тег из SX: в Sj:

An example here