I have some mandatory fields in my page along with CommandButtons and CommandImageLinks.
I set 'Immediate=true' on button and Imagelink to skip the validations. Button action is working without any issues.
But, When the ImageLink is cliked I need to perform search on a Table and need to refresh the table. ActionListener is getting triggered but the Table is not refreshing.
if I remove 'Immediate=true' , table is refreshing but it will fire the validations.

PartialSubmit and immediate both don't go well together, when immediate is true on a command button, action gets executed before update model phase so the values you entered in search fields will not be available by the time the action is performed.

You can find more info on below link:
https://cwiki.apache.org/confluence/display/MYFACES/How+the+immediate+attribute+works (Check UICommand components section)

Here is some text copied from above link which tells how to retrieve values in action for this case:
For non-immediate input components in the page, the only way an action method for an immediate command component can access user input data is by using component-binding or lookup-by-name to retrieve a specific UIComponent object then calling getSubmittedValue() to obtain the raw string provided by the user. This value has not been converted to its target type (using a user-specified or default Converter), nor has it been validated.

Note: There are couple of solutions suggested under Limitations, you may go through and proceed with what fits for you.