/usr/share/doc/libognl-java/DeveloperGuide/introduction.html is in libognl-java-doc 2.7.3-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 1. Introduction</title><link href="../docbook.css" type="text/css" rel="stylesheet"><meta content="DocBook XSL Stylesheets V1.78.1" name="generator"><link rel="home" href="index.html" title="OGNL Developer Guide"><link rel="up" href="index.html" title="OGNL Developer Guide"><link rel="prev" href="index.html" title="OGNL Developer Guide"><link rel="next" href="extendingOGNL.html" title="Extending OGNL"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">Chapter 1. Introduction</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="index.html"><img src="../images/navigation/prev.gif" alt="Prev"></a> </td><th align="center" width="60%"> </th><td align="right" width="20%"> <a accesskey="n" href="extendingOGNL.html"><img src="../images/navigation/next.gif" alt="Next"></a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="introduction"></a>Chapter 1. Introduction</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="introduction.html#embeddingOGNL">Embedding OGNL</a></span></dt><dt><span class="section"><a href="extendingOGNL.html">Extending OGNL</a></span></dt></dl></div><p><acronym class="acronym">OGNL</acronym> as a language allows for the navigation of Java objects through a concise syntax that allows for specifying, where possible, symmetrically settable and gettable values. The language specifies a syntax that
attempts to provide as high a level of abstraction as possible for navigating object graphs; this usually means specifying paths through and to JavaBeans properties, collection indices, etc. rather than directly accessing property getters and
setters (collectively know as <span class="emphasis"><em>accessors</em></span>).</p><p>The normal usage of OGNL is to embed the language inside of other constructs to provide a place for flexible binding of values from one place to another. An example of this is a web application where values need to be bound from a model
of some sort to data transfer objects that are operated on by a view. Another example is an XML configuration file wherein values are generated via expressions which are then bound to configured objects.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="embeddingOGNL"></a>Embedding OGNL</h2></div></div></div><p>The <code class="classname">ognl.Ognl</code> class contains convenience methods for evaluating <acronym class="acronym">OGNL</acronym> expressions. You can do this in two stages, parsing an expression into an internal form and then using that internal form
to either set or get the value of a property; or you can do it in a single stage, and get or set a property using the String form of the expression directly. It is more efficient to pre-compile the expression to it's parsed form,
however, and this is the recommended usage.</p><p>OGNL expressions can be evaluated without any external context, or they can be provided with an execution environment that sets up custom extensions to modify the way that expressions are evaluated.</p><p>The following example illustrates how to encapsulate the parsing of an OGNL expression within an object so that execution will be more efficient. The class then takes an <code class="classname">OgnlContext</code> and a root object to
evaluate against.</p><div class="example"><a name="N10035"></a><p class="title"><b>Example 1.1. Expression Class</b></p><div class="example-contents"><pre class="programlisting">import ognl.Ognl;
import ognl.OgnlContext;
public class OgnlExpression
{
private Object expression;
public OgnlExpression(String expressionString) throws OgnlException
{
super();
expression = Ognl.parseExpression(expressionString);
}
public Object getExpression()
{
return expression;
}
public Object getValue(OgnlContext context, Object rootObject) throws OgnlException
{
return Ognl.getValue(getExpression(), context, rootObject);
}
public void setValue(OgnlContext context, Object rootObject, Object value) throws OgnlException
{
Ognl.setValue(getExpression(), context, rootObject, value);
}
}</pre></div></div><br class="example-break"></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="index.html"><img src="../images/navigation/prev.gif" alt="Prev"></a> </td><td align="center" width="20%"> </td><td align="right" width="40%"> <a accesskey="n" href="extendingOGNL.html"><img src="../images/navigation/next.gif" alt="Next"></a></td></tr><tr><td valign="top" align="left" width="40%">OGNL Developer Guide </td><td align="center" width="20%"><a accesskey="h" href="index.html"><img src="../images/navigation/home.gif" alt="Home"></a></td><td valign="top" align="right" width="40%"> Extending OGNL</td></tr></table></div></body></html>
|