Добрый день.
Вопрос может и совсем простой, но не нашел примеров в документации по VisualForce.
Сделал простую форму для редактирования контакта.
Вот код.
<apex:form >
<apex:pageBlock >
<apex:pageBlockSection columns="1">
<apex:inputField value="{!contact.FirstName}"/>
<apex:inputField value="{!contact.LastName}"/>
<apex:inputField value="{!contact.Email}"/>
<apex:inputField value="{!contact.Contact_Level__c}"/>
<apex:inputField value="{!contact.AccountId}"/>
</apex:pageBlockSection>
<apex:commandButton action="{!save}" value="Save" style="margin-right:5px"/>
<apex:commandButton action="{!URLFOR("/apex/ContactsList")}" value="Cancel"
</apex:pageBlock>
</apex:form>
Есть две кнопки – Save и Cancel.
На форме присутствует встроенный механизм проверки заполнения обязательных полей по щелчку на кнопки.
Для кнопки Save это отлично, но вот для Cancel эта проверка тоже срабатывает, а это совсем не нужно, при отмене требуется просто вернуться на заданную страницу.
Как можно отключить проверку полей формы для Cancel?
Добрый день. Вопрос может и совсем простой, но не нашел примеров в документации по VisualForce. Сделал простую форму для редактирования контакта. Вот код. <apex:form > <apex:pageBlock > <apex:pageBlockSection columns="1"> <apex:inputField value="{!contact.FirstName}"/> <apex:inputField value="{!contact.LastName}"/> <apex:inputField value="{!contact.Email}"/> <apex:inputField value="{!contact.Contact_Level__c}"/> <apex:inputField value="{!contact.AccountId}"/> </apex:pageBlockSection> <apex:commandButton action="{!save}" value="Save" style="margin-right:5px"/> [b] <apex:commandButton action="{!URLFOR("/apex/ContactsList")}" value="Cancel" [/b] </apex:pageBlock> </apex:form> Есть две кнопки – Save и Cancel. На форме присутствует встроенный механизм проверки заполнения обязательных полей по щелчку на кнопки. Для кнопки Save это отлично, но вот для Cancel эта проверка тоже срабатывает, а это совсем не нужно, при отмене требуется просто вернуться на заданную страницу. Как можно отключить проверку полей формы для Cancel?
action="{!cancel}"
Стандартный "Action" у всех контроллеров.
action="{!cancel}" Стандартный "Action" у всех контроллеров.
У меня свой контроллер.
Но даже если использовать стандартный контроллер Contact, то все равно action="{!cancel}" не отрабатывает, пока не заполнено обязательное поле на форме.
Если заполнить поля - тогда отмена работает.
То есть проверка полей на форме идет до выполнения действия в контроллере.
У меня свой контроллер. Но даже если использовать стандартный контроллер Contact, то все равно action="{!cancel}" не отрабатывает, пока не заполнено обязательное поле на форме. Если заполнить поля - тогда отмена работает. То есть проверка полей на форме идет до выполнения действия в контроллере.
Immediate="true"
Immediate="true"
Нет, не помогает.
Нет, не помогает.
Если без standardController то у меня есть вот такое решение, которое работает
<apex:commandButton action="{!goBackToXXXRecord}" value="Go back" />
public PageReference goBackToXXXRecord() {
if (XXXId != null) {
return new PageReference('/../' + XXXId);
} else {
return new PageReference('/..');
}
}
Если без standardController то у меня есть вот такое решение, которое работает [code]<apex:commandButton action="{!goBackToXXXRecord}" value="Go back" />[/code] [code]public PageReference goBackToXXXRecord() { if (XXXId != null) { return new PageReference('/../' + XXXId); } else { return new PageReference('/..'); } }[/code]
Но вообще, если у тебя там какой-то встроенный механизм влидации, то почитай документацию по этому механизму и найди, как отключать ее в определенных (как эта) ситуациях. В стандартном Visualforce все отрабатывает прекрасно.
Но вообще, если у тебя там какой-то встроенный механизм влидации, то почитай документацию по этому механизму и найди, как отключать ее в определенных (как эта) ситуациях. В стандартном Visualforce все отрабатывает прекрасно.
Что значит не помогает? Это как раз и предназначено для твоего случая!
Проще сделать это средствами Javascript чем дергать SF без надобности.
top.location.href="your_url"
[quote="wilder"]Immediate="true"[/quote] [quote="beginner"]Нет, не помогает.[/quote] Что значит не помогает? Это как раз и предназначено для твоего случая! [quote="beginner"]но вот для Cancel эта проверка тоже срабатывает, а это совсем не нужно, при отмене требуется просто вернуться на заданную страницу. [/quote] Проще сделать это средствами Javascript чем дергать SF без надобности. top.location.href="your_url"
[url=https://salesforce.stackexchange.com/questions/95859/purpose-of-apexcommandbutton-immediate-true]immediate='true' + Cancel[/url]
Всем спасибо.
Методом научного тыка узнал в чем дело.
<apex:page controller="SaveContact" showHeader="false" sidebar="false" applyHtmlTag="false" applyBodyTag="false" docType="html-5.0">
А вот если без docType="html-5.0", то кнопка Cancel работает отлично, и со стандартным контроллером, с нестандартным, immediate='true' не нужно.
<apex:page controller="SaveContact" showHeader="false" sidebar="false" applyHtmlTag="false" applyBodyTag="false">
Не знаю, критично ли отсутствие docType="html-5.0" в заголовке...
Всем спасибо. Методом научного тыка узнал в чем дело. <apex:page controller="SaveContact" showHeader="false" sidebar="false" applyHtmlTag="false" applyBodyTag="false" [b]docType="html-5.0"[/b]> А вот если без [b]docType="html-5.0"[/b], то кнопка Cancel работает отлично, и со стандартным контроллером, с нестандартным, immediate='true' не нужно. <apex:page controller="SaveContact" showHeader="false" sidebar="false" applyHtmlTag="false" applyBodyTag="false"> Не знаю, критично ли отсутствие docType="html-5.0" в заголовке...
Я указываю docType="html-5.0" для того, чтоб использовать apex:input. Все работает отлично.
Хорошо, что все решилось.
Я указываю docType="html-5.0" для того, чтоб использовать apex:input. Все работает отлично. Хорошо, что все решилось.
apex:input работает и без docType="html-5.0" (он появился задолго до того как html 5.0 вошел в повседневное использование) Но при включенном docType="html-5.0" появляется валидация формы на стороне браузера.
[quote="Andrii Muzychuk"]Я указываю docType="html-5.0" для того, чтоб использовать apex:input.[/quote] apex:input работает и без docType="html-5.0" (он появился задолго до того как html 5.0 вошел в повседневное использование) Но при включенном docType="html-5.0" появляется валидация формы на стороне браузера.
Не знаю, Дима, как "твой" СФ, а мой СФ говорит
Error: Component <apex:input> in '/apex/ХХХ' requires HTML docType version 5.0 or higher in ХХХ at line 170 column 57
Не знаю, Дима, как "твой" СФ, а мой СФ говорит [code]Error: Component <apex:input> in '/apex/ХХХ' requires HTML docType version 5.0 or higher in ХХХ at line 170 column 57 [/code]
А! Все возможно. Наверное в каком-то из релизов решили отказаться от поддержка старой версии html. Я так написал потому что помню еще годика 3 такой проблемы не было.
А так как я уже 3-й год активно практикую ангуляр с JS то поэтому можно сказать что не в теме. Спасибо что просвятил!!!
А! Все возможно. Наверное в каком-то из релизов решили отказаться от поддержка старой версии html. Я так написал потому что помню еще годика 3 такой проблемы не было. А так как я уже 3-й год активно практикую ангуляр с JS то поэтому можно сказать что не в теме. Спасибо что просвятил!!! :)
А я как раз использую по возможности исключительно чистый Visualforce.
[quote="Dmitry Shnyrev"]А! Все возможно. Наверное в каком-то из релизов решили отказаться от поддержка старой версии html. Я так написал потому что помню еще годика 3 такой проблемы не было. А так как я уже 3-й год активно практикую ангуляр с JS то поэтому можно сказать что не в теме. Спасибо что просвятил!!! :)[/quote] А я как раз использую по возможности исключительно чистый Visualforce.