You need to sign in to do that
Don't have an account?
Custom VF SelectList component error - "Validation Error: Value is not valid"
Hello. I have a custom VF component which contains an <apex:selectList> component, as follows:
<apex:component controller="picklistController" id="compPickList">
<apex:attribute name="SystemEntity" description="" type="String" required="true" default="Account" assignTo="{!systemObject}"></apex:attribute>
<apex:attribute name="picklistField" description="" type="String" required="true" default="Type" assignTo="{!picklist_Field}"></apex:attribute>
<apex:attribute name="value" description="" type="String[]" required="true"></apex:attribute>
<apex:selectList id="ddlPickList" value="{!value}" multiselect="true" size="4">
<apex:selectOptions value="{!pickListOptions}"></apex:selectOptions>
</apex:selectList>
</apex:component>
The component's controller is obvious, so am skipping it for now.
The component acceps two attributes which it uses to populate the selectList options. I am using this component in a page and it works fine, i.e. am able to retrieve the selected values from the component into the page as long as am working with the pre-populated options, the code is as follows:
<apex:page controller="sampleCon" id="myPage"> <apex:form id="myForm"> <c:sObjectFieldPicklistComponent id="accountPicklist" value="{!accountIndustry}" picklistField="Ownership" systemEntity="Account" /> <apex:commandButton value="Test" action="{!SaveValues}" /> </apex:form> </apex:page>
I am again skipping the page controller code as it's obvious, but do let me know if you want to see it.
Now, the problem starts when I add dynamic <option> to this multi-select picklist through JavaScript, am able to add them in the browser on the client side, but when I click on the command button to submit the user selected values, the previously working code breaks, the values are not submitted, the execution never enters the action function (in this case - SaveValues()), and I get a message in the System Log window:
myPage:myForm:accountPicklist:compPickList:ddlPickList: Validation Error: Value is not valid
Any idea what's happening here? I am suspecting that the system (not me) is checking the submitted values against the viewstate and is throwing an error somewhere which I am unable to trap and trace.
Can someone please explain this behavior, and if possible, a solution to get this thing going?
Thanks in advance!
Ajay
I was able to find a workaround for this issue.
In my case I am using 3 tabs and 2 picklists are used for each tab. So for 3 tabs there are total of 6 picklists.
The issue was values for each pair of picklists were different for each tab. And due to values mismatch it was giving error on tab switch.
So the workaround that I found for this issue is :
I wrote small javascript code that is being called on tab change. Following is the javascript code I used. This refers the picklist and sets its value to empty string :
document.getElementById ('page: myform1:block2:Info1: firstTable: 0:select1').value = ''; document.getElementById ('page: myform2:block2:Info2: secondTable: 1:select2').value = '';
This code just sets the value for each picklist to ' '(Empty String) temporarily. This is the default value for each picklist. So, when the page get loads completely original values overrides this default value and you get the value expected.
This way it does not give any validation error as default value is present in each picklist for each tab.
All Answers
Hi I have a simlar issue if I understand you correctly? When using the apex:SelectList tag my required fields are not displaying with the normal red left border property "showing that they are required" and when i try and submit without populating the field I get the following or similar unreadble validation error message returned to to the . "j_id0:StdOXCEITemplate:j_id9:j_id37:j_id49:j_id50:org: Validation Error: Value is required." Returned to the apex:pageMessages tag.
Any solution appreciated
Did you decalere any varibles as static in your controller? If so try to remove the static keyword!
I had a similar problem and it was because I have set some relevat variables as static variables.
greetings
Jochen
Ajay (metaforce),
It looks like your variable accountIndustry should be an array since your selectList has multiselect="true". Can you check to see that you are setting accountIndustry ( = new List<string>();) before you click the commandButton?
Hope that helps.
I have exactly the same issue. Can anyone help me out?
Regards
Mukul
Mukul,
Can you post some sample code?
Thanks.
Thanks Drawloop Support, for the reply.
Here is my VF Code:
<apex:outputPanel id="scoreSetting" layout="block" style="{!showBlock}"> <apex:pageBlockSection title="Define Pick-List Mapping Rules (Select Ranges to Define the Score Values)" collapsible="false"> <apex:dataTable value="{!tempRules}" var="mr1" styleClass="tableClass list" rowClasses="odd,even"> <apex:column > <apex:facet name="header">Score</apex:facet> <apex:outputText value="Score"/> </apex:column> <apex:column > <apex:facet name="header">Operator</apex:facet> <apex:inputField value="{!mr1.mappingRule.ScoreOperator1__c}"/> </apex:column> <apex:column > <apex:facet name="header">Score Value 1</apex:facet> <apex:inputText value="{!mr1.MappingRule.ScoreVal1__c}" size="10"/> </apex:column> <apex:column > <apex:facet name="header">Operator</apex:facet> <apex:inputField value="{!mr1.MappingRule.ScoreOperator2__c}"/> </apex:column> <apex:column > <apex:facet name="header">Score Value 2</apex:facet> <apex:inputText value="{!mr1.MappingRule.ScoreVal2__c}" size="10"/> </apex:column> <apex:column > <apex:facet name="header">Mapping</apex:facet> <apex:selectList id="cbxlevel2" multiselect="false" value="{!mr1.selectedVal2}" size="1"> <apex:selectOptions value="{!pickListOptions}"></apex:selectOptions> </apex:selectList> </apex:column> </apex:dataTable> </apex:pageBlockSection> </apex:outputPanel> <apex:pageBlockButtons location="bottom"> <apex:commandButton action="{!saveAndDefine}" value="Save & Define Rules" id="defineRules"/> <apex:commandButton action="{!saveAndReturn}" value="Save & Return" id="return"/>
Here is my Controller Code:
// Get Map Rules List public List<tempList> tL = new List<tempList>(); public List<tempList> getTempRules() { String op = ApexPages.currentPage().getParameters().get('op'); // Mapping Rule for new rule Set if (op!= 'edit') { if (tL.size() < 10) { for (integer i = 0; i < 10; i++) { MappingRule__c MappingRule1 = new MappingRule__c(); System.debug('Temp List : ' + tL); tL.add( new tempList(MappingRule1, selectedVal2) ); } } } // Mapping Rule for existing rule set else { List <MappingRule__c> MappingRule1 = [select ScoreVal2__c, ScoreVal1__c, ScoreOperator2__c, ScoreOperator1__c, Mapping_Field__c, mapping__c From mappingRule__c where RuleSetId__c =: String.escapeSingleQuotes(getRuleSetId())]; Integer n = 10-MappingRule1.size(); if (tL.size() < 10) { for (MappingRule__c m : MappingRule1) { tL.add( new tempList(m, String.valueOf(m.mapping__c))); } for (integer i = 0; i < n; i++){ mappingRule__c mr = new mappingRule__c(); tL.add( new tempList(mr, selectedVal2)); } } System.debug('TL In EDIT: ' + tL); } return tL; } public void setTempRules(List<tempList> tL) { this.tL = tL; } public class tempList { public MappingRule__c mappingRule {get; set;} public String selectedVal2 {get; set;} public tempList(MappingRule__c mr, String sVal) { mappingRule = mr; selectedVal2 = sVal; } }
I am sorry I didnt post the whole VF Page code. Here it is:
<apex:page controller="newScoreRuleController" tabStyle="Scoring_Rule_Wizard__tab"> <apex:sectionHeader title="{!text} Lead Target Rule Set" help="/apex/scoringRuleAppHelp"/> <apex:form id="theForm"> <apex:pageBlock title="Rule Set"> <apex:messages styleClass="error" /> <apex:pageBlockSection > <apex:pageBlockSectionItem > <apex:outputLabel value="Rule Set Name:" for="ruleSetName"/> <apex:inputText value="{!RuleSetName1}" id="ruleSetName"> </apex:inputText> </apex:pageBlockSectionItem> <apex:pageBlockSectionItem > <apex:outputLabel value="Comment:" for="ruleSetComment"/> <apex:inputText value="{!ruleSetComment1}" id="ruleSetComment"/> </apex:pageBlockSectionItem> <apex:pageBlockSectionItem > <font color="red">Note: After calculating the score, the score will be stored in your lead record in which you map it to. Please pick it wisely. Mapping field can either be numeric or a picklist. A good example of mapping field will be Lead Rating.<br/></font> </apex:pageBlockSectionItem> <br/> <apex:pageBlockSectionItem id="mappingFld1"> <apex:outputLabel value="Mapping field:" for="mappingFld"/> <apex:selectList id="mappingFld" multiselect="false" value="{!mappingFld}" size="1"> <apex:actionSupport event="onchange" rerender="scoreSetting"/> <apex:selectOptions value="{!mapLeadFields}"></apex:selectOptions> <script type="text/javascript"> function leadChosen() { var selectedVal = document.getElementById('{!$Component.mappingFld}').value; // alert(selectedVal); // Cut the String and see what is the type... var temp = new Array(); temp = selectedVal.split('/'); var mytype = temp[0]; if (mytype == 'INTEGER' || mytype == 'DOUBLE' || mytype == 'CURRENCY' || mytype == '') { document.getElementById('{!$Component.scoreSetting}').style.display="none"; } else { document.getElementById('{!$Component.scoreSetting}').style.display="block"; } } window.onload = leadChosen; </script> <div class="mouseOverInfoOuter" onfocus="addMouseOver(this)" onmouseover="addMouseOver(this)"><img src="/s.gif" alt="" class="infoIcon" title=""/><div class="mouseOverInfo" style="display: none; opacity: 0;">Choose a field where you would want to store your final score for each lead. Your lead record will be updated with the value that you choose here.</div></div> </apex:selectList> </apex:pageBlockSectionItem> <br/> </apex:pageBlockSection> <apex:outputPanel id="scoreSetting" layout="block" style="{!showBlock}"> <apex:pageBlockSection title="Define Pick-List Mapping Rules (Select Ranges to Define the Score Values)" collapsible="false"> <apex:dataTable value="{!tempRules}" var="mr1" styleClass="tableClass list" rowClasses="odd,even"> <apex:column > <apex:facet name="header">Score</apex:facet> <apex:outputText value="Score"/> </apex:column> <apex:column > <apex:facet name="header">Operator</apex:facet> <apex:inputField value="{!mr1.mappingRule.ScoreOperator1__c}"/> </apex:column> <apex:column > <apex:facet name="header">Score Value 1</apex:facet> <apex:inputText value="{!mr1.MappingRule.ScoreVal1__c}" size="10"/> </apex:column> <apex:column > <apex:facet name="header">Operator</apex:facet> <apex:inputField value="{!mr1.MappingRule.ScoreOperator2__c}"/> </apex:column> <apex:column > <apex:facet name="header">Score Value 2</apex:facet> <apex:inputText value="{!mr1.MappingRule.ScoreVal2__c}" size="10"/> </apex:column> <apex:column > <apex:facet name="header">Mapping</apex:facet> <apex:selectList id="cbxlevel2" multiselect="false" value="{!mr1.selectedVal2}" size="1"> <apex:selectOptions value="{!pickListOptions}"></apex:selectOptions> </apex:selectList> </apex:column> </apex:dataTable> </apex:pageBlockSection> </apex:outputPanel> <apex:pageBlockButtons location="bottom"> <apex:commandButton action="{!saveAndDefine}" value="Save & Define Rules" id="defineRules"/> <apex:commandButton action="{!saveAndReturn}" value="Save & Return" id="return"/> <apex:commandButton action="/apex/ruleSet" value="Cancel" id="cancel"/> </apex:pageBlockButtons> </apex:pageBlock> </apex:form> </apex:page>
Makul,
Is this your entire apex class? What action (clicking a button, changing a value, etc.) on the visualforce page causes the error?
Thanks.
Hi there,
No this is not my entire apex class. When i click the submit button, at that time it happens.
Regards
Mukul
Makul,
Your visualforce page does not have a Submit button. The buttons are Save & Define Rules, Save & Return, and Cancel. In order to debug what those buttons are doing, I would need to be able to see the part of your class that includes the functions for those buttons.
Thanks.
Hi Drawloop,
It happens the moment i click the Save and Define or Save and Return button.
Here is my code:
/ Save and Define Method (This saves a rule set in the rule set object) public PageReference saveanddefine() { System.debug('In Save and Define...'); // Add it in a try catch loop so that it catches exceptions // try { // Insert it into the table and redirect it with the ID of the record System.debug('BEFORE******RULESETNAME' + RuleSetName1); String myId; // If a double field is chosen, blank out the tL String[] multVal = mappingFld.split('/'); if(multVal[0] == 'Double' || multVal[0] == 'Integer') { tL.clear(); } if(tL.size() > 0) { for (TempList m : tL) { System.debug('HERE in MappingRule'); System.debug('Score Val1: ' + m.mappingRule.ScoreVal1__c); System.debug('ScoreOp1: ' + m.mappingRule.ScoreOperator1__c); System.debug('ScoreOp2: ' + m.mappingRule.ScoreOperator2__c); System.debug('ScoreVal2: ' + m.mappingRule.ScoreVal2__c); System.debug('Mapping: ' + m.selectedVal2); if(m.mappingRule.ScoreVal1__c == '' && m.mappingRule.ScoreOperator1__c != null) { System.debug('HERE In ValidationRule'); ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Please enter a Score Value in the Score Value 1 column')); return null; } if(m.mappingRule.ScoreVal1__c != '' && m.mappingRule.ScoreOperator1__c != null && m.selectedVal2 == null) { System.debug('HERE In ValidationRule'); ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Please enter a rating for the mapping rule')); return null; } if(m.mappingRule.ScoreVal2__c == '' && m.mappingRule.ScoreOperator2__c != null) { System.debug('HERE In ValidationRule'); ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Please enter a Score Value in the Score Value 2 column')); return null; } if (m.selectedVal2 != null) { if (m.mappingRule.ScoreOperator1__c == null && m.mappingRule.ScoreVal1__c != '') { System.debug('SR OP1::' + m.mappingRule.ScoreOperator1__c); System.debug('SR Val1::' + m.mappingRUle.ScoreVal1__c); ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Please enter an Operator value.')); return null; } } if (m.selectedVal2 != null) { if (m.mappingRule.ScoreOperator2__c == null && m.mappingRule.ScoreVal2__c != '') { System.debug('SR OP2::' + m.mappingRUle.ScoreOperator2__c); System.debug('SR Val2::' + m.mappingRUle.ScoreVal2__c); ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Please enter an Operator value.')); return null; } } } } // Check if it is an edit operation or not String op = Apexpages.currentPage().getParameters().get('op'); if (op == 'edit') { System.debug('RULESETNAME In EDIT: ' + RuleSetName1); System.debug('RULESETCOMMENT In EDIT: ' + RuleSetComment1); myId = Apexpages.currentPage().getParameters().get('id'); // Edit the RuleSet fields RuleSet__c editRuleSet = [select ruleSet__c, RuleSetComment__c, Mapping_Field__c from RuleSet__c where id =: myId]; editRuleSet.ruleSet__c = RuleSetName1; editRuleSet.ruleSetComment__c = RuleSetComment1; editRuleSet.Mapping_Field__c = MappingFld; update editRuleSet; // // Edit the Mapping Rule fields too List<MappingRule__c> editMapSet = [select Id, ScoreOperator1__c, ScoreOperator2__c, ScoreVal1__c, ScoreVal2__c, mapping__c from MappingRule__c where RuleSetId__c =: myId]; //System.debug('RULESET EDIT: ' + editMapSet); if (editMapSet.size() > 0) { delete editMapSet; } // system.debug('Mapping value : ' + getSelectedVal2()); // Take the tempList and start inserting values System.debug('TEMP LIST PRINT: ' + tL); // system.debug('Mapping value : ' + getSelectedVal2()); if(tL.size() > 0) { for(tempList r : tL){ MappingRule__c mapper = new MappingRule__c(); mapper.ruleSetId__c = myId; mapper.mapping__c = r.selectedVal2; mapper.ScoreOperator1__c = r.mappingRule.ScoreOperator1__c; mapper.ScoreOperator2__c = r.mappingRule.ScoreOperator2__c; mapper.ScoreVal1__c = r.mappingRule.ScoreVal1__c; mapper.ScoreVal2__c = r.mappingRule.ScoreVal2__c; mapper.Mapping__c = r.selectedVal2; mapper.Mapping_field__c = MappingFld; upsert mapper; } } // Delete the extra stuff that you got in here by adding empty lines List <mappingRule__c > maps = [Select Id From mappingRule__c n Where mapping__c = null ]; delete maps; } else { System.debug('RULESETNAME In NEW: ' + getRuleSetName1()); RuleSet__c newRuleSet = new RuleSet__c(RuleSet__c = RuleSetName1, RuleSetComment__c = getRuleSetComment1(), Mapping_Field__c = getMappingFld()); insert newRuleSet; // Get the ID of the record inserted and redirect String ruleName = ruleSetName1; RuleSet__c ruleId = [select id from RuleSet__c where ruleSet__c =: ruleName]; myId = String.valueOf(ruleId.id); System.debug('RULE ID' + myId); // system.debug('Mapping value : ' + getSelectedVal2()); if(tL.size() > 0) { for(tempList r : tL){ MappingRule__c mapper = new MappingRule__c(); mapper.ruleSetId__c = myId; mapper.mapping__c = r.selectedVal2; mapper.ScoreOperator1__c = r.mappingRule.ScoreOperator1__c; mapper.ScoreOperator2__c = r.mappingRule.ScoreOperator2__c; mapper.ScoreVal1__c = r.mappingRule.ScoreVal1__c; mapper.ScoreVal2__c = r.mappingRule.ScoreVal2__c; mapper.Mapping__c = r.selectedVal2; mapper.Mapping_field__c = MappingFld; upsert mapper; } } System.debug('TEMP LIST PRINT: ' + tL); // Delete the extra stuff that you got in here by adding empty lines List <mappingRule__c > maps = [Select Id From mappingRule__c Where mapping__c = null ]; delete maps; } // Create a new Page URL with the String ID appended to it PageReference pg = new PageReference('/apex/scoreRuleStep1?id=' + myId); pg.setRedirect(true); return pg; // } // catch (Exception ex) { // ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Query Error: ' + ex.getMessage())); // return null; // } } // Save and Return Method (for ruleset) public PageReference saveandreturn() { // Add it in a try catch loop so that it catches exceptions try { // Insert it into the table and redirect it with the ID of the record System.debug('BEFORE******RULESETNAME' + RuleSetName1); String myId; String[] multVal = mappingFld.split('/'); if(multVal[0] == 'Double' || multVal[0] == 'Integer') { tL.clear(); } if(tL.size() > 0) { // for (MappingRule__c m : mappingRule) { for (TempList m : tL) { System.debug('HERE in MappingRule'); System.debug('Score Val1: ' + m.mappingRule.ScoreVal1__c); System.debug('ScoreOp1: ' + m.mappingRule.ScoreOperator1__c); System.debug('ScoreOp2: ' + m.mappingRule.ScoreOperator2__c); System.debug('ScoreVal2: ' + m.mappingRule.ScoreVal2__c); System.debug('Mapping: ' + m.selectedVal2); if(m.mappingRule.ScoreVal1__c == '' && m.mappingRule.ScoreOperator1__c != null) { System.debug('HERE In ValidationRule'); ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Please enter a Score Value in the Score Value 1 column')); return null; } if(m.mappingRule.ScoreVal1__c != '' && m.mappingRule.ScoreOperator1__c != null && m.selectedVal2 == null) { System.debug('HERE In ValidationRule'); ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Please enter a rating for the mapping rule')); return null; } if(m.mappingRule.ScoreVal2__c == '' && m.mappingRule.ScoreOperator2__c != null) { System.debug('HERE In ValidationRule'); ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Please enter a Score Value in the Score Value 2 column')); return null; } if (m.selectedVal2 != null) { if (m.mappingRule.ScoreOperator1__c == null && m.mappingRule.ScoreVal1__c != '') { System.debug('SR OP1::' + m.mappingRule.ScoreOperator1__c); System.debug('SR Val1::' + m.mappingRUle.ScoreVal1__c); ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Please enter an Operator value.')); return null; } } if (m.selectedVal2 != null) { if (m.mappingRule.ScoreOperator2__c == null && m.mappingRule.ScoreVal2__c != '') { System.debug('SR OP2::' + m.mappingRUle.ScoreOperator2__c); System.debug('SR Val2::' + m.mappingRUle.ScoreVal2__c); ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Please enter an Operator value.')); return null; } } } } // Check if it is an edit operation or not String op = Apexpages.currentPage().getParameters().get('op'); if (op == 'edit') { System.debug('RULESETNAME In EDIT: ' + RuleSetName1); System.debug('RULESETCOMMENT In EDIT: ' + RuleSetComment1); myId = Apexpages.currentPage().getParameters().get('id'); // Edit the RuleSet fields RuleSet__c editRuleSet = [select ruleSet__c, RuleSetComment__c, Mapping_Field__c from RuleSet__c where id =: myId]; editRuleSet.ruleSet__c = RuleSetName1; editRuleSet.ruleSetComment__c = RuleSetComment1; editRuleSet.Mapping_Field__c = MappingFld; update editRuleSet; // // Edit the Mapping Rule fields too List<MappingRule__c> editMapSet = [select Id, ScoreOperator1__c, ScoreOperator2__c, ScoreVal1__c, ScoreVal2__c, mapping__c from MappingRule__c where RuleSetId__c =: myId]; //System.debug('RULESET EDIT: ' + editMapSet); if (editMapSet.size() > 0) { delete editMapSet; } // system.debug('Mapping value : ' + getSelectedVal2()); // Take the tempList and start inserting values System.debug('TEMP LIST PRINT: ' + tL); if(tL.size() > 0) { for(tempList r : tL){ MappingRule__c mapper = new MappingRule__c(); mapper.ruleSetId__c = myId; mapper.mapping__c = r.selectedVal2; mapper.ScoreOperator1__c = r.mappingRule.ScoreOperator1__c; mapper.ScoreOperator2__c = r.mappingRule.ScoreOperator2__c; mapper.ScoreVal1__c = r.mappingRule.ScoreVal1__c; mapper.ScoreVal2__c = r.mappingRule.ScoreVal2__c; mapper.Mapping__c = r.selectedVal2; mapper.Mapping_field__c = MappingFld; upsert mapper; } } // Delete the extra stuff that you got in here by adding empty lines List <mappingRule__c > maps = [Select Id From mappingRule__c n Where mapping__c = null ]; delete maps; } else { System.debug('RULESETNAME In NEW: ' + getRuleSetName1()); RuleSet__c newRuleSet = new RuleSet__c(RuleSet__c = RuleSetName1, RuleSetComment__c = getRuleSetComment1(), Mapping_Field__c = getMappingFld()); insert newRuleSet; // Get the ID of the record inserted and redirect String ruleName = getRuleSetName1(); RuleSet__c ruleId = [select id from RuleSet__c where ruleSet__c =: ruleName]; myId = String.valueOf(ruleId.id); System.debug('RULE ID' + myId); // system.debug('Mapping value : ' + getSelectedVal2()); if(tL.size() > 0) { for(tempList r : tL){ System.debug('TL1: ' + r.mappingRule.ScoreOperator1__c); System.debug('TL1: ' + r.mappingRule.ScoreOperator2__c); System.debug('TL1: ' + r.mappingRule.ScoreVal2__c); System.debug('TL1: ' + r.mappingRule.ScoreVal1__c); System.debug('TL1: ' + r.selectedVal2); MappingRule__c mapper = new MappingRule__c(); mapper.ruleSetId__c = myId; mapper.mapping__c = r.selectedVal2; mapper.ScoreOperator1__c = r.mappingRule.ScoreOperator1__c; mapper.ScoreOperator2__c = r.mappingRule.ScoreOperator2__c; mapper.ScoreVal1__c = r.mappingRule.ScoreVal1__c; mapper.ScoreVal2__c = r.mappingRule.ScoreVal2__c; mapper.Mapping__c = r.selectedVal2; mapper.Mapping_field__c = MappingFld; upsert mapper; } } System.debug('TEMP LIST PRINT: ' + tL); // Delete the extra stuff that you got in here by adding empty lines List <mappingRule__c > maps = [Select Id From mappingRule__c Where mapping__c = null ]; delete maps; } // Create a new Page URL with the String ID appended to it PageReference pg = new PageReference('/apex/ruleSet'); pg.setRedirect(true); return pg; } catch (Exception ex) { ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Query Error: ' + ex.getMessage())); return null; } }
Thanks again for all your help!
Regards
Mukul
Hi Drawloop,
Were you able to find out what might be causing the issue? Please let me know.
it is very urgent!
Regards
Mukul
Makul,
This still doesn't look like your entire apex class. I suspect the problem is with one of your get or set functions. I saw the error "Validation Error: Value is not valid" when a list was instantiated, not set to anything, and a value was being added to it.
This error is exactly why we need Salesforce to implement this idea: Visualforce Error Line Numbers.
Thanks.
I was able to find a workaround for this issue.
In my case I am using 3 tabs and 2 picklists are used for each tab. So for 3 tabs there are total of 6 picklists.
The issue was values for each pair of picklists were different for each tab. And due to values mismatch it was giving error on tab switch.
So the workaround that I found for this issue is :
I wrote small javascript code that is being called on tab change. Following is the javascript code I used. This refers the picklist and sets its value to empty string :
document.getElementById ('page: myform1:block2:Info1: firstTable: 0:select1').value = ''; document.getElementById ('page: myform2:block2:Info2: secondTable: 1:select2').value = '';
This code just sets the value for each picklist to ' '(Empty String) temporarily. This is the default value for each picklist. So, when the page get loads completely original values overrides this default value and you get the value expected.
This way it does not give any validation error as default value is present in each picklist for each tab.
I was able to find a workaround for this issue.
In my case I am using 3 tabs and 2 picklists are used for each tab. So for 3 tabs there are total of 6 picklists.
The issue was values for each pair of picklists were different for each tab. And due to values mismatch it was giving error on tab switch.
So the workaround that I found for this issue is :
I wrote small javascript code that is being called on tab change. Following is the javascript code I used. This refers the picklist and sets its value to empty string :
document.getElementById ('page: myform1:block2:Info1: firstTable: 0:select1').value = '';
document.getElementById ('page: myform2:block2:Info2: secondTable: 1:select2').value = '';
This code just sets the value for each picklist to ' '(Empty String) temporarily. This is the default value for each picklist. So, when the page get loads completely original values overrides this default value and you get the value expected.
This way it does not give any validation error as default value is present in each picklist for each tab.