## com.sun.jersey.api.view
Class Viewable

    java.lang.Object
      com.sun.jersey.api.view.Viewable

Direct Known Subclasses:
  ResolvedViewable

    public class Viewable

extends java.lang.Object

A viewable type referencing a template by name and a model to be passed to the template. Such a type may be returned by a resource method of a resource class. In this respect the template is the view and the controller is the resource class in the Model View Controller pattern.

The template name may be declared as absolute template name if the name begins with a '/', otherwise the template name is declared as a relative template name.

A relative template name requires resolving to an absolute template name when the viewable type is processed. If a resolving class is present then that class will be used to resolve the relative template name. If a resolving class is not present then the class of the last matching resource obtained from `UriInfo.getMatchedResources()`, namely the class obtained from the expression `uriInfo.getMatchedResources().get(0).getClass()`, is utilized as the resolving class. If there are no matching resources then an error will result.

The resolving class, and super classes in the inheritence hierarchy, are utilized to generate the absolute template name as follows. The base path starts with '/' character, followed by the fully qualified class name of the resolving class, with any '.' and '$' characters replaced with a '/' character, followed by a '/' character, followed by the relative template name. If the absolute template name cannot be resolved into a template reference (see `ViewProcessor` and `TemplateContext`) then the super class of the resolving class is utilized, and is set as the resolving class. Traversal up the inheritence hierarchy proceeds until an absolute template name can be resolved into a template reference, or the Object class is reached, which means the absolute template name could not be resolved and an error will result.

Author:
  Paul.Sandoz@Sun.Com

Constructor Summary
`Viewable(java.lang.String templateName)` Construct a new viewable type with a template name.
`Viewable(java.lang.String templateName, java.lang.Object model)` Construct a new viewable type with a template name and a model.
`Viewable(java.lang.String templateName, java.lang.Object model, java.lang.Class<?> resolvingClass)` Construct a new viewable type with a template name, a model and a resolving class.

Method Summary
`java.lang.Object` | `getModel()` Get the model.
`java.lang.Class<?>` | `getResolvingClass()` Get the resolving class.
`java.lang.String` | `getTemplateName()` Get the template name.
`boolean` | `isTemplateNameAbsolute()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### Viewable

    public Viewable(java.lang.String templateName)

  Construct a new viewable type with a template name.

  The model will be set to `null`.

  Parameters:
    `templateName` - the template name, shall not be `null`.

### Viewable

    public Viewable(java.lang.String templateName,
                    java.lang.Object model)

  Construct a new viewable type with a template name and a model.

  Parameters:
    `templateName` - the template name, shall not be `null`.
    `model` - the model, may be `null`.

### Viewable

    public Viewable(java.lang.String templateName,
                    java.lang.Object model,
                    java.lang.Class<?> resolvingClass)
             throws java.lang.IllegalArgumentException

  Construct a new viewable type with a template name, a model and a resolving class.

  Parameters:
    `templateName` - the template name, shall not be `null`.
    `model` - the model, may be `null`.
    `resolvingClass` - the class to use to resolve the template name if the template is not absolute, if `null` then the resolving class will be obtained from the last matching resource.
  Throws:
    `java.lang.IllegalArgumentException` - if the template name is `null`.

Method Detail

### getTemplateName

    public java.lang.String getTemplateName()

  Get the template name.

  Returns:
    the template name.

### getModel

    public java.lang.Object getModel()

  Get the model.

  Returns:
    the model.

### getResolvingClass

    public java.lang.Class<?> getResolvingClass()

  Get the resolving class.

  Returns:
    the resolving class.

### isTemplateNameAbsolute

    public boolean isTemplateNameAbsolute()

  Returns:
    true if the template name is absolute, and starts with a '/' character

Copyright © 2017 Oracle Corporation. All Rights Reserved.