2012-02-07 14 views
0

私はapex:repeatタグのリストを表示するVfページを持っています。表示されるフィールドはすべてapex:inputfieldです。 2つのフィールドVFページのapex:repeatタグのapex:inputフィールドで検証を行う方法

  1. quantity__c
  2. Change__c

量iが変更フィールドは /必須満たされるべきで欲しいその後、変更された場合、私は、検証したいがあります。 VFレベルでこの検証を行うことはできますか?

これを達成する他の方法はありますか?

おかげ

アップデート:ここでLaceySnrにより示唆されるように、私が使用しているコードがあります。私は頂点メッセージがデバッグログに投げられますが、編集

 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) 

Vfpageでの表示されていない見ることができますあなたは直接のjavascriptを介してこれを行うことができ、またはあなたが<apex:actionSupport>を使用することができ

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

答えて

1

onChangeイベントを2番目のフィールドをリフレッシュするが、正直言って私は最も簡単で最も堅牢な方法は、レコードを保存する前にコントローラで検証を行うことだと思う。

編集

私はあなたがそれを再レンダリングしていることを確認し、あなたがページで<apex:pageMessages/>タグを持っていると仮定 - 出力パネルにメッセージタグを入れて、あなたはページ全体の更新を行っていない、すなわち場合アクションのrerender属性に<apex:outputPanel>という属性を指定します。

編集II

は、あなたの行動は間違いなくnullPagereferenceを返しますか?それ以外の場合は正しいと思われる。アクション機能と出力パネルの間にページブロックなどがありますか?その場合は、ID階層をドリルダウンする必要があります。

+0

私の主な関心事は、フィールドが変更されているかどうかを確認する方法です。リストをループして以前の値を保持しているリストで確認することをお勧めしますか? – Prady

+0

それは私がそれをする方法です、ちょうどレコードIDのマップを保持する - >古い値とそれに対してチェックしてください。 –

+0

デバッグログにapex:メッセージが表示されますが、VFページには表示されません。どんな考えでも何が原因である可能性がありますか? – Prady

関連する問題