Skip to main content
6-Contributor
September 19, 2024
Question

Unable to read the list of selected objects from folder for validateMultiselectedAction

  • September 19, 2024
  • 1 reply
  • 1590 views

Version: Windchill 12.0

 

Use Case: Validating all Selected objects with few conditions during validateSelectedMultiSelectAction


Description:

I am selecting multiple objects(Documents/Parts ) from the folder to perform to trigger an action which performs setState/Workflow initiation.
Here  reading the list of objects from command bean/validation criteria returning the null.

When I am selecting one object it is returning the object and validateSelectedAction is executed with out any issues.

I tried multiple ways to get the selected objects by changing the window type= normal popup new no content and etc...

I also used different apis to read the objects but none is working.

 

All these api's were returning the selected objects like 2 months back now all of a sudden it all stopped returning the objects.

Used below apis to get the selected objects from the folder  .

WTCollection targetObjects = new WTArrayList(criteria.getTargetObjects());
final List<NmOid> selectedListOidForPopup = nmCommandBean.getSelectedOidForPopup();
commandBean.getSelectedOidForPopup()

 

Same happened with the servletRequest where it was not returning all the selected objects as a work around I used the jsp as an intermidate point to read the selected objects and then redirected to customservlet storing these objects in an attribute. 

 

@HelesicPetr  @avillanueva 

1 reply

HelesicPetr
22-Sapphire II
22-Sapphire II
September 19, 2024

Hi @MainuddinShaik 

Try all following methods. I know you've already used one but try it

One of them should return all selected objects. 

nmCommand.getNmOidSelected();
nmCommand.getNmOidSelectedInOpener();
nmCommand.getSelectedOidForPopup();
nmCommand.getSelectedInOpener();
nmCommand.getSelectedFromOpenedWizard();

PetrH

6-Contributor
September 19, 2024

From the logs I can tell that validateSelected and validateSelectedMultiSelectAction are not at all executed.

It returned an empty list from validate selected.

Logers :
For Single objects is selected:
actionName=setToXXXXXXXXX, Performing full pre validation...
Reading objects from nmCommandBean...
getNmOidSelected:[]
getNmOidSelectedInOpener:[]
getSelectedOidForPopup:[]
getSelectedInOpener:[]
getSelectedFromOpenedWizard:[]
objects=[wt.doc.WTDocument:413320506], Read objects from nmCommandBean.
Reading objects from nmCommandBean...
getNmOidSelected:[]
getNmOidSelectedInOpener:[]
getSelectedOidForPopup:[]
getSelectedInOpener:[]
getSelectedFromOpenedWizard:[]
objects=[wt.doc.WTDocument:413320506], Read objects from nmCommandBean.
  actionName=setToXXXXXXXXX, status=PERMITTED, Performed full pre validation.
When multiple objects are selected :
  actionName=setToXXXXXXXXX, Performing full pre validation...
Reading objects from nmCommandBean...
getNmOidSelected:[]
getNmOidSelectedInOpener:[]
getSelectedOidForPopup:[]
getSelectedInOpener:[]
getSelectedFromOpenedWizard:[]
objects=[], Read objects from nmCommandBean.
Reading objects from nmCommandBean...
getNmOidSelected:[]
getNmOidSelectedInOpener:[]
getSelectedOidForPopup:[]
getSelectedInOpener:[]
getSelectedFromOpenedWizard:[]
objects=[], Read objects from nmCommandBean.
actionName=setToXXXXXXXXX, status=HIDDEN, Performed full pre validation.

 

 

 

 

Below is the code I'm using. Added all the logs mentioned above but this method itself not being triggered during the validation. After enabling JCADebug this validator is hiding the action.

 

This validator class extends DefaultUIComponentValidator

 

 

 

 

 

 @Override
 public UIValidationResultSet validateSelectedMultiSelectAction(
 final UIValidationKey validationKey, final UIValidationCriteria criteria,
 final Locale locale) throws WTException {
 LOGGER.info(
 "actionName={}, status={}, Executing validateSelectedMultiSelectAction validation.",
 validationKey.getComponentID(), UIValidationStatus.PERMITTED.toString());
 final UIValidationResultSet uiValidationResultSet = UIValidationResultSet.newInstance();
 final NmCommandBean commandBean = NmCommandBean.getNmCommandBean(criteria.getFormData());
 LOGGER.info("getNmOidSelected::" + commandBean.getNmOidSelected());
 LOGGER.info("getNmOidSelectedInOpener::" + commandBean.getNmOidSelectedInOpener());
 LOGGER.info("getSelectedOidForPopup::" + commandBean.getSelectedOidForPopup());
 LOGGER.info("getSelectedInOpener::" + commandBean.getSelectedInOpener());
 LOGGER.info("getSelectedFromOpenedWizard::" + commandBean.getSelectedFromOpenedWizard());
 LOGGER.info("with popup criteria popup::" + criteria.getSelectedOidForPopup().size());
 final String actionName = validationKey.getComponentID();
 final List<String> errorMessages = validateSelectedAction(commandBean, actionName);
 if (!errorMessages.isEmpty()) {
 errorMessages.add(0, WTMessage.getLocalizedMessage(RESOURCE, HEADER_ERROR_MSG));
 final UIValidationFeedbackMsg feedbackMsg = UIValidationFeedbackMsg.newInstance(
 String.join(SEPARATOR, errorMessages), FeedbackType.FAILURE);
 uiValidationResultSet.addResult(UIValidationResult.newInstance(validationKey,
 UIValidationStatus.DENIED, feedbackMsg));
 LOGGER.info(
 "actionName={}, status={}, Executed validateSelectedMultiSelectAction validation.",
 validationKey.getComponentID(), UIValidationStatus.PERMITTED.toString());
 } else {
 UIValidationResult uiValidationResult = UIValidationResult.newInstance(validationKey,
 UIValidationStatus.PERMITTED);
 uiValidationResultSet.addResult(uiValidationResult);
 LOGGER.info(
 "actionName={}, status={}, Executed validateSelectedMultiSelectAction validation.",
 validationKey.getComponentID(), UIValidationStatus.PERMITTED.toString());
 }
 return uiValidationResultSet;
 }

 

 

 

 

 

HelesicPetr
22-Sapphire II
22-Sapphire II
September 19, 2024

Hi @MainuddinShaik 

Find the method that is triggered. 

I guess that your definition of the validator is not well defined. 

 

How do you call the validator ? where ? where is definition that the validator should be used?

 

PetrH