Scrollbar |
---|
Symbols are named configuration settings for Tapestry IOC-based services. Tapestry provides mechanisms for easy access to symbols from within such services.
...
The value on the inside is the symbol name. By convention, the symbol name is segmented with periods (for example, "tapestry.production-mode").
Built-in Symbols
...
The Configuration page lists most of the symbol names used by Tapestry's built-in services.
Using Symbols in your Services
...
Note: When injecting a symbol as a string into a service, you must use the @Inject annotation as well as @Value or @Symbol; otherwise Tapestry will inject the service's service id.
Symbols in Component Classes and Templates
It's easy to use a symbol in a component class:
Code Block | ||
---|---|---|
| ||
@Inject
@Symbol(SymbolConstants.PRODUCTION_MODE)
private boolean productionMode;
. . .
void setupRender() {
if (productionMode) {
. . .
}
} |
You can even use them directly in a component template, using the "symbol" binding prefix:
Code Block | ||
---|---|---|
| ||
<t:if test="!symbol:tapestry.production-mode"> <p>WARNING: We're running in development mode (slower, and less secure)</p> </t:if> |
Symbol Resolution
Symbols are resolved by the SymbolSource service. The SymbolSource service checks against an ordered list of SymbolProvider objects.
...
From the previous example:
Code Block | ||||
---|---|---|---|---|
| ||||
public void contributeApplicationDefaults(MappedConfiguration<String, String> configuration) { configuration.add("some-service-id", "WackyCollaborator"); } |
...
It is possible and valid to define one symbol in terms of one or more other symbols.
Code Block | ||||
---|---|---|---|---|
| ||||
public void contributeFactoryDefaults(MappedConfiguration<String, String> configuration) { configuration.add("report.url", "http://${report.host}:${report.port}/${report.path}"); configuration.add("report.host", "www.myreportsite.com"); configuration.add("report.port", "80"); configuration.add("report.path", "/report.cgi"); } |
The ordinary default for report.url
will be: http://www.myreportsite.com:80/report.cgi
.
However, this can be changed by making an overriding contribution to the ApplicationDefaults service configuration.
...
When the report.url
is referenced, an exception will be thrown with the message: Symbol 'report.path' is defined in terms of itself (report.path --> report.url --> report.path).
Scrollbar |
---|