Я хочу поделиться своим опытом использования primefaces, F viewParam и р: CommandButton, и задать несколько questions.Take посмотреть на этой странице:с помощью е: viewParam с обязательным атрибутом и команды
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<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:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
<f:metadata>
<f:viewParam required="true" name="id_file" value="#{bean.idFile}" />
</f:metadata>
<h:form id="tableform" prependId="false">
<p:commandButton actionListener="#{bean.myMethod())}" icon="ui-icon-search" title="View" />
</h:form>
<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />
</h:body>
</html>
у бэкбона есть метод myMethod(), который ничего не делает. Когда вы вводите страницу, он ожидает параметр «id_file» и помещает его в свойство idFile бэк-компонента. Затем вы нажимаете кнопку и вызывается myMethod. Затем нажмите снова, и вы получите неясную ошибку проверки и MyMethod никогда не называют:
j_idt1: Validation Error: Value is required.j_idt1: Validation Error: Value is required.
Прежде всего, следует помнить, что без р: сообщения Вы не можете увидеть это сообщение, вы должны копать XML, что primefaces отправлять по ajax-звонкам. Во-вторых, после 4-х часов отладки я пытался изменить п: viewParam так:
<f:viewParam name="id_file" value="#{bean.idFile}" />
без «требуется»: магически все начать работать, я могу нажать 1,2,3 и т.д., и MyMethod является каждый раз. Итак, проблема в том, что ajax submit проверяет параметр, заданный с помощью f: viewParam, это звучит глупо для меня, но хорошо, я могу жить с ним.
Мои вопросы:
почему эта ошибка проверки не появляется первая кнопка времени нажата? Если вы посмотрите на POST-адреса ajax, то они идентичны
Предполагается, что это нормально, чтобы проверить параметры представления (что в моей идее принадлежит к виду) на частичном вызове ajax?
Есть ли способ рассказать, чтобы строки не проверялись на конкретный запрос ajax (process = "@ this" не разрешается)?
Спасибо, я надеюсь, что мой опыт позволит вам не тратить часы на отладку!
Спасибо вам Kolossus, он работает, как я ожидал, в настоящее время. Но я до сих пор удивляюсь, почему первый щелчок кнопки не генерирует любая ошибка проверки, я имею в виду, также в первом вызове ajax у меня нет «id_file», или нет? –
@moretti.fabio - не совсем уверен, кажется мне странным. Вы переходите на эту страницу из другого? Или вы загружаете страницу заново? – kolossus
Я пробовал загружать страницу с нуля, исходя из другой страницы и обновляя страницу с помощью ctrl + f5, результат всегда один и тот же: первая работа клика, последующие клики нет. –