2015-01-21 3 views
0

Первое сообщение здесь, так что немного со мной. Искал много, но либо из-за того, что я был слепым, либо потому, что я просто не использовал правильные строки поиска, я не нашел ответа, относящегося к моей проблеме.Первичный опрос вызывает сообщение от f: viewParam

В принципе, у меня есть веб-приложение, написанное на Java и использующее Prime. Я использую p: layout, имеющий основное содержимое в центральном блоке, заголовок на севере и нижний колонтитул в южном блоке макета. Узел запаздывания содержит p: poll, который каждые две секунды запускается при вызове функции js при запуске oncomplete.

Пока все хорошо. Дело в том, что на определенной странице, в блоке макета центра, у меня есть f: viewParam, который принимает только longs и, даже несмотря на то, что значение действительно, когда этот опрос выполняется, появляется требуемое сообщение из f: viewParam.

После интенсивного поиска я обнаружил, что добавив ignoreAutoUpdate = "true" в p: poll, сообщения из f: viewParam не будут запущены, а предупреждение, указывающее, что я должен предоставить действительный id не показан.

Итак, мой вопрос заключается в следующем: наличие ignoreAutoUpdate = "true" в моем p: poll будет подвергать риску, если это возможно, подтверждение f: viewParam? Или безопасно оставить его там?

Вот это relevan части из моего макета:

Опрос формируют блок макета на запад:

<h:form id="liveQueueForm"> 
    <p:remoteCommand name="rcStart" action="#{liveQueueMB.startPoll()}"/> 
    <p:remoteCommand name="rcStop" action="#{liveQueueMB.stopPoll()}"/> 
    <p:poll id="liveQueueUpdater" delay="10" widgetVar="livePoll" interval="2" listener="#{liveQueueMB.init}" oncomplete="updateLiveQueue(xhr, status, args);" autoStart="true" partialSubmit="true" ignoreAutoUpdate="true" immediate="true" /> 

    <div id="live-queue"> 
     <div id="queue-holder"></div> 
    </div> 
</h:form> 

Диафрагменное: блок метаданных, который имеет свою п: viewParam:

<f:metadata> 
     <f:viewParam name="callId" value="#{viewInboundCallDetailsMB.callId}" required="true" requiredMessage="Please provide a valid call ID" converter="javax.faces.Long" converterMessage="The call ID is not numeric" /> 
     <f:viewAction action="#{viewInboundCallDetailsMB.init}"/> 
</f:metadata> 

Спасибо!

+0

Где вы разместили тег ''? Атрибут процесса '' по умолчанию установлен в '@ form' (и' 'to' @ all'). Таким образом, он обрабатывает всю форму. Возможно, вам потребуется установить атрибут процесса '' на '@ this' вместо ('). – Tiny

+0

Теги '' '' используются на основе логического значения, хранящегося в ManagedBean, который имеет область сеанса. Я уже думал об этой возможности и пробовал ее, прежде чем приступить к решению ignoreAutoUpdate = "true" ... –

ответ

0

От Primefaces руководства о ignoreAutoUpdate: «Если это правда, компоненты, автообновление =» истина «не будет обновляемыми для этого запроса Если не указаны, или значение равно ложно, нет таких признаков не производятся.».

Это означает, что он не собирается обновлять компонент viewParam и другие компоненты, которые имеют autoUpdate = "true".

Это не отключает проверку на нем. (Если, конечно, если вы используете свой опрос для проверки, который, я полагаю, вы не знаете)

Смежные вопросы