Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


  • Renamed to ExpressionEvaluator and DefaultExpressionEvaluator
  • Moved to org.kuali.rice.krad.uif.view
  • Changed method signatures to not take view
  • Added method initializeEvaluationContext(Object contextObject)
  • Added public getExpressionEvaluator() to ViewHelperServiceImpl for getting initialized instance during lifecycle


KULRICE-5391 - Add messages to lookup results

  • Added new messages for primary key and results found to
  • Added LookupResultCollectionSection now includes LookupResultMessages in
KULRICE-5287 - Lookup - Need export on results table

  • Replaces use of flash export functionality built in datatables.tableTools with server side method calls
  • Added new retrieveTableData method to UifControllerBase
  • Added two new parameters, showSearchOption and showExportOption, to the RichTable
  • Defaults showExportOption to true
KULRICE-9469 - Exception will be thrown if page in page
  • This structure was not allowed before, but now it is enforced
KULRICE-7998 - Dirty field plugin eliminated and replaced with KRAD implementation
  • Removed for performance reasons
KULRICE-9595 - Avoid running scripts on non-visible content
  • Javascript for components hidden behind disclosure or details will delay their execution til opened with the exception of validation framework scripts
KULRICE-9693 - View header and top group update on page change
  • They will now update on every page change, eliminating the need for custom scripts to update header content
KULRICE-9694 - Implement both local and ajax requested Json data generation for datatables (RichTable)
  • 2 new options on Richtable - forceLocalJsonData and forceAjaxJsonData for use in performance tweaking
KULRICE-9598 - Validation framework improvement to cut data that is determined to be default
  • Data related to validation is now retrieved through the js function getValidationData rather than using jQuery .data call directly
KULRICE-9606 -  Make property for retrieving groups via ajax for lightbox display - add useAjaxCallForContent flag
  • useAjaxCallForContent eliminates the need to manually retrieve content for custom dialogs - it will automatically retrieve group content when the showLightboxComponent call is made against a group with this flag set to true
  • renderAsPlaceholder renamed as useAjaxCallForContent


Changed addLineLabel from Label to Message on CollectionGroup

2.3-M3 to 2.3-RC1

KULRICE-8433 - Removed quickfinder and inquiry initialization from data and input field beans

In order to improve performance by thinning out the view graph, the quickfinder and inquiry widget initialization was removed from Uif-DataField and Uif-InputField.

This means if you were using nested properties to configure these widgets that will now throw a NPE. 

Ex. quickfinder.render="false", quickfinder.dataObjectClassName="edu.iu.TravelAccount"

Instead, you must fully initialize and configure the widget.

Code Block
titleQuickfinder Conversion
 <property name="quickfinder.dataObjectClassName" value=""/>
 <property name="quickfinder.fieldConversions">
       <entry key="number" value="field3"/>
converts to:
<property name="quickfinder">
    <bean parent="Uif-QuickFinder" p:dataObjectClassName=""
Code Block
titleInquiry Conversion
<property name="inquiry.dataObjectClassName"
          value="" />
<property name="inquiry.inquiryParameters">
      <entry key="routeHeaderInitiatorWorkflowId" value="principalId1" />
converts to:
<property name="inquiry">
   <bean parent="Uif-Inquiry" p:dataObjectClassName="" 

Automatic quickfinders and inquiries will still be associated when relationships are found, and the widget is not manually configured. To disable automatic functionality use the flags: enableAutoQuickfinder, enableAutoInquiry, enableAutoDirectInquiry 

Code Block
titleTurning off Automatic Quickfinder
converts to:

The initialization of the quickfinder widget on collection groups has also been removed. This means if you were setting p:collectionLookup.render="false" to remove it you no longer need to do so.

Code Block
titleCollection Lookup Conversion
<property name="collectionLookup.dataObjectClassName" value="org.kuali.rice.krms.impl.repository.CategoryBo"/>
<property name="collectionLookup.fieldConversions" value="id:id,name:name,namespace:namespace"/>
converts to:

<property name="collectionLookup">
   <bean parent="Uif-CollectionQuickFinder"


KULRICE-9612 - Copying of components reimplemented to use copy method on component

For performance reasons the use of CloneUtils for copying components was replaced with copy methods on each component. If you have created any custom components you should override the copyProperties method and copy the properties specific to the subclass.

Code Block
titleCopy Properties Implementation
     * @see org.kuali.rice.krad.uif.component.ComponentBase#copy()
    protected <T> void copyProperties(T component) {

        TextControl textControlCopy = (TextControl) component;


        if(datePicker != null) {


Make sure to call super, and to invoke copy() on all nested components.

KULRICE-8910 - Bootstrap added as default library, Fluid removed
  • The fluid CSS files and infusion JavaScript library have been removed from the default theme. If you wish to continue using these you will need to download and add to your custom theme. 
  • In addition, the Reorderer component was removed from KRAD since it was implemented using the Fluid infusion library.
  • This change includes widespread changes to styling of KRAD as a whole, and elimination of many uif- css classes on components to a single most specific class

    • This may require changes to your custom css to select groups and fields by their data-role attribute instead of by class name
    • Many margins, padding, and font styles were changed which may have a heavy impact on more divergent layouts if they are inheriting these
    • Additional default styles added and removed may have large impact on heavily customized themes
    • Styling of the navigation menu and tabs was completely changed
    • Button styling was completely changed and is now backed by bootstrap styling/naming
KULRICE-9238 - Changes to view theme and new theme builder

Along with bringing in Bootstrap, the view theme was reworked to support Less and to fix previous pain points. This mostly only impacts those who are creating custom themes.

Switching to use non minified files

By default the themes will use the minified versions of the theme CSS and JS files. If you wish to use the full source files for development purposes, set the Rice config properties '' to true in your local config file.

New Theme Beans

The beans Uif-BaseTheme, Uif-KradTheme, and Uif-ClassicKnsTheme have been removed. If you were previously extending one of these for a custom theme, you should now extend Uif-KbootTheme.

Building Kboot

If you are using maven overlays to acquire the KRAD web content (recommended), the Kboot theme will be ready for consumption. If instead you are acquiring the KRAD web content by manually pulling source, you will need to add the theme builder plugin to your maven process. See 'pom.xml' in the KRAD Web module for an example.

Building Custom Themes

Documentation will be coming shortly in the KRAD guide for developing custom themes. In the meantime, look at the JavaDocs for ViewTheme, and ThemeBuilder in the new KRAD theme builder module.

KULRICE-9238 - Improved web asset handling

To support the new theme builder some of the KRAD web resources were moved. This includes all plugins moving from '/krad/plugins' to '/plugins'. Any resources being referenced from these directories will need to be updated.

KULRICE-9883 - coerceValue JS Function will return boolean values
  • This affects SPEL backed expression evaluation on the client, boolean based expressions are now allowable without the need to check them textually (see jira)
KULRICE-8930 - rowCssClasses revamp for TableLayoutManager and LightTable
  • DO NOT use rowCssClasses property to set your row css classes for these tables (it is used internally by the framework - still available for use on GridLayouts), use conditionalRowCssClasses
  • conditionalRowCssClasses allow the use of SPEL (using the line context) allowing you to dynamically style rows based on their content, also allows keywords all, even, odd, and index number

Non-Impacting RC1 Changes to be Aware Of

PropertyPlaceholderConfigurer support added to the data dictionary. This means you can use ${} expressions to reference Rice config properties (useful for configured paths, these will only get evaluated once as opposed to the @{} UIF expressions which get evaluated many times)

CssGridLayout was added a new layout with two types - Fixed and Fluid.  It has a demo in the KRAD library example app.

Performance boosts to validateForm and validateLine calls

Suggest functionality will work in a lightbox/dialog

Problems with sub collections in nested groups refreshing resolved

2.3.0 to 2.3.1

KULRICE-9918 - Provide a way for application modules to specify their own custom document types for notifications generated for them by KEN

The NotificationContract implementing classes now have a new field called "docTypeName" which allows implementers to specify custom document types for different notifications. This field is not required, and if it is left blank, it will default to the document type "KualiNotification". Current notifications already in the system will default to this as well and not be affected.

2.3.X to 2.4.X

See here: