используя f: viewParam с обязательным атрибутом и командами
Я хочу поделиться своим опытом с использованием простых лиц, f: viewParam и p: commandButton, и задать несколько вопросов. Взгляните на эту страницу:
<?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.
Прежде всего, помните, что без p: сообщений вы не можете видеть это сообщение, вы должны выкопать XML, который первичные лица отправляют при вызовах ajax. Во-вторых, после 4 часов отладки я попытался изменить f: viewParam следующим образом:
<f:viewParam name="id_file" value="#{bean.idFile}" />
без «требуется»: волшебным образом все начинает работать, я могу нажать 1,2,3 и т. д., и каждый раз вызывается myMethod Итак, проблема в том, что ajax submit проверяет параметр, указанный в f: viewParam, это звучит глупо для меня, но хорошо, я могу с этим смириться.
Мои вопросы:
почему эта ошибка проверки не появляется при первом нажатии кнопки? Если вы посмотрите на ajax POST, они идентичны
предполагается, что все в порядке для проверки параметров представления (которые, по моему мнению, принадлежат представлению) при частичном вызове ajax?
есть ли способ указать простейшим лицам не проверять конкретный запрос ajax (process = "@ this" не разрешается)?
Спасибо, я надеюсь, что мой опыт позволит вам не тратить часы на отладку!