CRUD operations are at the core of many database-driven applications. With databases of tens or hundreds of tables, a good CRUD component is the key for user satisfaction and developer productivity.

Clean, elegant forms

Portofino gives you clean elegant forms for any viewing or editing situation.

Several field types are supported: single or multiple line text, numeric values of any precision or scale, dates, picklists, radio buttons, and attachments.

Master-detail views

CRUD pages can be arranged in a master-detail hierarchy. From a first-level object, find out its related second-level objects. From the second level proceed to the third level and so on.

Friendly URLs

Portofino constructs simple, meaningful URLs for CRUD objects. For example, the milestone with id 3 under a project with id 1 will have a url of "/prj/1/milestone/3".

Field validation

Forms check that required fields are entered and that the values are of the right type or in the expected range. If not, an error message is presented.

You can also specify more complex validations according to your application rules.

Auto-complete fields

Auto-complete fields make it easy to choose from a large number of options.


Some fields can require the upload of an attachment (a file). Portofino makes this process simple for the user, handling the complexity of storing and managing the attachments on the server.

Bulk updates

Sometimes you want to update a number of records at once. Select the records, click on "edit", select the fields you want to modify (the others will be unaffected), enter a value, finally press "update".

Search forms

Search forms allow users to find the information they want in a large number of records.

Users can make a search form appear with a show/hide button and you can configure which fields are searchable.

Search results

Search results are presented in an elegant table. Large result sets are paginated and handled efficiently from the point of view of performance. The results can be sorted by a given column.

Results navigation

When you click on a row of the results to view its details, you can continue to navigate the result set using the first/previous/next/last buttons.

Pdf and Excel exports

You can export search results in pdf or Excel format out of the box. Using a fop template you change the appearance of pdf exports to add a logo, to apply extra formatting or perform any other customization.

HQL queries

Let's now see how the CRUD page works behind the scenes. There is a configuration that you can change easily on-line.

Portofino integrates Hibernate for data access and persistence. At the core of the CRUD's configuration is an HQL (Hibernate Query Language) query that defines the table to query, any filter criteria and the default ordering of the results.

Property definition

A property is a column returned by the HQL query. For each property you can define:

  • if it is enabled or disabled (disabled properties will not be visible)
  • an optional label to replace the default name
  • whether it can be entered by the user when creating or updating a record
  • whether it should be shown in the search results
  • whether it is searchable in search forms

Selection providers

If a column references another table, you can configure how it should be handled by the system and presented to users.


You can decide the permissions on the CRUD from the page's permissions. You can assign the create/edit/delete permissions to the system's user groups.

Script customization

You can further customize any aspect of a CRUD page using the script editor. This is where you can:

  • add extra buttons, e.g. for workflow operations
  • respond to AJAX calls
  • customize validations
  • set up default values when creating new objects
  • customize the operations when objects are saved, updated or deleted
  • add permissions and guards
  • do much more...

Scripts are written in Groovy and have full access to the power of Portofino's API.