JSF Spring Integration
This is version . It is not the current version, and thus it cannot be edited.
Back to current version   Restore this version

Die JSF Spring Integration enthält zusätzlichen Integration, um JSF Ext zusammen mit Spring verwenden zu können.

Custom Scope Injection#

Beim Laden von Scopes werden typischer Weise Parameter übergeben:
<h:commandButton image="#{resource['images/bitcons:edit.gif']}" title="#{messages['edit']}">
	<f:ajax/>
	<e:load scopeId=":user-input">
		<f:param name="user" value="#{user}"/>
	</e:load>
</h:commandButton>

Der Wert wird zunächst in den geladenen Scope geschrieben. Die Parameter können generell mit der Spring-Annotation @Value injiziert über eine EL-Expression injiziert werden:


Allerdings macht Spring Probleme, wenn die EL-Expression zu null evaluiert oder das Property nicht gefunden werden kann. Des Weiteren stört die unnötige EL-Expression, da der Wert bereits durch den Feld- bzw. Methodennamen klar ist, ähnlich bei @Autowired. Durch die Annotation @ScopeValue kann dies eleganter erreicht werden:

@Component
@Scope(Scopes.CUSTOM_SCOPE)
public class UserEdit {
	@ScopeValue
	private User user;
	
	public User getUser() {
		if (user == null)
			user = new User();
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
}

Die Annotation @ScopeValue ist vergleichbar mit @Value("#{scope.user}"). Allerdings ist die Injection effizienter, da keine EL-Expression evaluiert wird und es kommt zu keinen Problemen, falls der Wert nicht vorhanden ist.