You need to sign in to do that
Don't have an account?
MaheemSam
System.NullPointerException: Argument 1 cannot be null
Hi,
Need a help in one of the strange error am getting in the below controller calling this from visualforce page.
Below is the error am getting while loading the visualforce page
System.NullPointerException: Argument 1 cannot be null
Class.ShareForecastController.getRoles: line 37, column 1
Please suggest me how to fix this error.
Class
Visual Force Page.
Need a help in one of the strange error am getting in the below controller calling this from visualforce page.
Below is the error am getting while loading the visualforce page
System.NullPointerException: Argument 1 cannot be null
Class.ShareForecastController.getRoles: line 37, column 1
Please suggest me how to fix this error.
Class
public with sharing class ShareForecastController { public List<User> users {get;set;} private String soql {get;set;} private Map<Id,User> rolesMap; private String userId; private String userRoleId = ''; private Set<Id> alreadySharedUserIds; public String shareToUserId { get { if (shareToUserId == null) { shareToUserId = ''; } return shareToUserId; } set; } public String sortDir { get { if (sortDir == null) { sortDir = 'asc'; } return sortDir; } set; } public String sortField { get { if (sortField == null) {sortField = 'UserRole.name'; } return sortField; } set; } public string getSelectedRole(){ return userRoleId ; } public void setSelectedRole(String s){ this.userRoleId = s; } public list<SelectOption>getRoles(){ list<SelectOption> options = new list<SelectOption>(); options.add(new SelectOption('-- Select Role --', '-- Select Role --', true)); for(User obj : rolesMap.values()) { options.add(new SelectOption(obj.UserRoleId,obj.UserRole.name)); } return options; } public ShareForecastController() { alreadySharedUserIds = new Set<Id>(); users = new List<User>(); userId = userInfo.getUserId(); userRoleId = userInfo.getUserRoleId(); for(Custom_Forecast_Share__c obj : [Select id,Name,Forecast_Shared_To__c from Custom_Forecast_Share__c where isActive__c = true]) { alreadySharedUserIds.add(obj.Forecast_Shared_To__c); } soql = 'SELECT Id,FirstName,LastName,UserRoleId,UserRole.name,UserRole.ParentRoleId FROM User WHERE Id Not IN :alreadySharedUserIds AND IsActive = True AND ForecastEnabled = True'; runQuery(); rolesMap = new Map<Id,User>(); for(User obj : users) { rolesMap.put(obj.UserRoleId,obj); } } public void toggleSort() { sortDir = sortDir.equals('asc') ? 'desc' : 'asc'; runQuery(); } public void toggleRole() { system.debug('In toggleRole userRoleId: '+userRoleId); soql = 'SELECT Id,FirstName,LastName,UserRoleId,UserRole.name,UserRole.ParentRoleId FROM User WHERE Id Not IN :alreadySharedUserIds AND IsActive = True AND ForecastEnabled = True AND UserRoleId = :userRoleId'; runQuery(); } public void runQuery() { try { users = Database.query(soql + ' AND id != :userId order by ' + sortField + ' ' + sortDir+ ' LIMIT 999'); system.debug('Final Query'+soql + ' AND id != :userId order by ' + sortField + ' ' + sortDir); if(users.size() <= 0) { ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'No records were found based on your criteria')); } } catch (Exception e) { ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Ooops!'+e.getMessage())); } } public PageReference runSearch() { String Name = Apexpages.currentPage().getParameters().get('name'); soql = 'SELECT Id,FirstName,LastName,UserRole.name FROM User WHERE IsActive = True AND ForecastEnabled = True'; if (!Name.equals('')) soql += ' AND Name LIKE \'%'+String.escapeSingleQuotes(Name)+'%\''; runQuery(); return null; } public PageReference shareForecast() { try{ Custom_Forecast_Share__c ojb = new Custom_Forecast_Share__c( Forecast_Owner__c = userId, Forecast_Shared_To__c = shareToUserId, isActive__c = true ); insert ojb; } catch(Exception e) { ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Ooops! Something went wrong.')); return null; } PageReference pg = Page.Forecasting; pg.setRedirect(true); return pg ; } }
Visual Force Page.
<apex:page controller="ShareForecastController" sidebar="false" title="Share Forecast" tabStyle="Custom_Forecast__tab"> <apex:form > <apex:pageMessages id="errors" /> <apex:sectionHeader title="Share Forecast" subtitle="Share your forecast"/> <table width="100%" border="0"> <tr> <td width="200" valign="top"> <apex:pageBlock title="Search" mode="edit" id="criteria"> <script type="text/javascript"> function doSearch() { var Name = document.getElementById("Name").value; //console.log(Name ); if(Name == '') { alert('Please enter your search criteria.'); return false; }else{ searchServer( document.getElementById("Name").value ); } } </script> <apex:actionFunction name="searchServer" action="{!runSearch}" rerender="results,errors"> <apex:param name="Name" value="" /> </apex:actionFunction> <table cellpadding="2" cellspacing="2"> <tr> <td style="font-weight:bold;">Name<br/> <input type="text" id="Name"/> </td> </tr> <tr> <td style="font-weight:bold;"> <apex:commandButton value="Search" onclick="doSearch();" reRender="forRerender" status="searchStatus"/> <apex:inputHidden id="forRerender"/> <apex:actionStatus startText="Searching..." id="searchStatus"> <apex:facet name="stop"></apex:facet> </apex:actionStatus> </td> </tr> </table> </apex:pageBlock> </td> <td valign="top"> <apex:pageBlock mode="edit" id="results"> <apex:pageBlockSection > <apex:pageblockSectionItem > <apex:outputLabel >Roles: </apex:outputLabel> <apex:selectlist value="{!SelectedRole}" size="1"> <apex:actionSupport event="onchange" action="{!toggleRole}" rerender="results"/> <apex:selectOptions value="{!Roles}" /> </apex:selectlist> </apex:pageblockSectionItem> </apex:pageBlockSection> <apex:pageBlockTable value="{!users}" var="user" rendered="{!users.size>0}"> <apex:column > <apex:facet name="header"> <apex:commandLink value="First Name" action="{!toggleSort}" rerender="results"> <apex:param name="sortField" value="firstName" assignTo="{!sortField}"/> </apex:commandLink> </apex:facet> <apex:outputField value="{!user.firstName}"/> </apex:column> <apex:column > <apex:facet name="header"> <apex:commandLink value="Last Name" action="{!toggleSort}" rerender="results"> <apex:param name="sortField" value="lastName" assignTo="{!sortField}"/> </apex:commandLink> </apex:facet> <apex:outputField value="{!user.lastName}"/> </apex:column> <apex:column > <apex:facet name="header"> <apex:commandLink value="Role" action="{!toggleSort}" rerender="results"> <apex:param name="sortField" value="UserRole.Name" assignTo="{!sortField}"/> </apex:commandLink> </apex:facet> <apex:outputField value="{!user.UserRole.name}"/> </apex:column> <apex:column headerValue="Action" width="100"> <apex:commandLink value="Share Forecast" action="{!shareForecast}" reRender="errors"> <apex:param name="shareToUserI" value="{!user.Id}" assignTo="{!shareToUserId}"/> </apex:commandLink> </apex:column> </apex:pageBlockTable> </apex:pageBlock> </td> </tr> </table> </apex:form> </apex:page>
Try replacing your controller code with this:
If this answered your question then mark it as Solved so that others can view it as a proper solution.
Thanks,
Apoorv
All Answers
Try replacing your controller code with this:
If this answered your question then mark it as Solved so that others can view it as a proper solution.
Thanks,
Apoorv
Thanks
Sudhir