как мы выполняем проверку на поле apex: input в теге apex: repeat на странице VF - PullRequest
1 голос
/ 07 февраля 2012

У меня есть страница Vf, которая показывает список в теге apex: repeat. Все поля отображаются как apex: inputfield. Есть 2 поля

  1. количество__c
  2. Change__c

Я хочу проверить, если количество изменилось, то я хочу, чтобы поле изменения быть заполненным / обязательным. Могу ли я сделать эту проверку на уровне VF?

Есть ли другой способ сделать это?

Спасибо

Обновление: вот код, который я использую, как предложено LaceySnr. Я вижу, что сообщение apex выбрасывается в журнал отладки, но его не видно в Vfpage

     for (integer i=0;i<List_FinalStdItems.size();i++)
    {
        system.debug('inside loop to check quantity is changed');
        ItemSet.add(List_FinalStdItems[i].id);
        system.debug('New quantity'+List_FinalStdItems[i].quantity__c +'  old quantity'+MapStdItemsOldMap.get(List_FinalStdItems[i].id).quantity__c);
     //   system.debug('old quantity'+MapStdItemsOldMap.get(List_FinalStdItems[i].id).quantity__c);
        if (MapStdItemsOldMap.get(List_FinalStdItems[i].id).quantity__c!=List_FinalStdItems[i].quantity__c)
        {
            system.debug('This quantity for item '+List_FinalStdItems[i].Name+ ' has changed');
            if(List_FinalStdItems[i].Inventory_Change_Reason__c==null || List_FinalStdItems[i].Inventory_Change_Reason__c=='')
            {
                system.debug('This quantity for item '+List_FinalStdItems[i].Name+ ' has changed and Reason for change is empty');
                ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR,'Reason for change not entered for changed Quantity'));
                error=true;
            }
        }
    }


01:04:55.541 (541902000)|SYSTEM_METHOD_ENTRY|[151]|ApexPages.addMessage(ApexPages.Message)
01:04:55.541 (541985000)|VF_PAGE_MESSAGE|Reason for change not entered for changed Quantity
01:04:55.542 (542008000)|SYSTEM_METHOD_EXIT|[151]|ApexPages.addMessage(ApexPages.Message)

Редактировать

 <apex:outputpanel id="mess">
<apex:pageMessages />
</apex:outputpanel>
.
.
.
 <apex:actionFunction name="save" action="{!Save}" rerender="mess"/>

1 Ответ

2 голосов
/ 07 февраля 2012

Вы можете сделать это напрямую через javascript, или вы можете использовать <apex:actionSupport> с событием onChange для обновления второго поля, но, честно говоря, я думаю, что самый простой и надежный способ - просто выполнить проверку вконтроллер перед сохранением записи.

Редактировать

Я предполагаю, что у вас есть тег <apex:pageMessages/> на странице, убедитесь, что вы переопределяете его - т.е. если выВы не выполняете обновление всей страницы, поместите тег сообщений на панели вывода и укажите <apex:outputPanel> в атрибуте rerender для вашего действия.

Редактировать II

Ваше действие определенно возвращает null Pagereference?В противном случае то, что у вас есть, выглядит правильно.Есть ли какие-либо блоки страниц и т. Д. Между вашей функцией действия и панелью вывода?Если это так, вам может понадобиться развернуть иерархию идентификаторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...