# ITEM level event hooks

```java
public String appendItemPageHead() { return ""; }
public String appendItemPageFoot() { return ""; }
```

```java
public void beforeSelectItem() throws Exception {}
public void beforeChangeItem() throws Exception {}
public void beforeUpdateItem() throws Exception {}
public void beforeRenderItem() throws Exception {}
public void afterUpdateItem() throws Exception {}

public boolean afterUpdateRedirectActive() { return false; }
public String afterUpdateRedirectContent()   { return null; }
```

#### <span class="mw-headline" id="bkmrk-item-execution-order-1">ITEM execution order: viewing data</span>

1. **beforeSelectItem**
2. Gather form data from database 
    - dataFilterActive &gt; dataFilterHandler
    - itemFilterActive &gt; itemFilterHandler
3. **beforeRenderItem**
4. Return form to user

#### <span class="mw-headline" id="bkmrk-item-execution-order-3">ITEM execution order: posting data</span>

1. **beforeSelectItem**
2. Gather form data from database
3. **beforeChangeItem**
4. Update field values
5. **beforeUpdateItem**
6. Write changes to database
7. **afterUpdateItem**
8. if NO OTHER ACTION: 
    - **afterUpdateRedirectActive**
    - if TRUE 
        - **afterUpdateRedirectContent**
9. Return content to user