If the tableName is determined at runtime, the well known dbforms variables, e.g.
currentRow_tablename will not work. So there is a new variable
named dbforms which is a hashtable that holds a list of
all known dbforms and subforms in the page. Key of the map is
the new db:dbforms attribute name. Objects of this list are
of the type DbFormContext, which will give the access to all
of the known fields:
Public class DbFormsContext {
public String getPosition();
public ResultSetVector getRsv();
public Map getSearchFieldAlgorithmNames();
public Map getSearchFieldModeNames();
public Map getSearchFieldNames();
public Map getCurrentRow();
public void setCurrentRow(Map map);
public void setPosition(String string);
}Any form with a subform on it would be ok too.
See DbFormTagTEI class and the test case (in the bookstore example) testAuthorBooksSubFormWithContextVar.jsp for details!
For example:
<db:dbform ...
tableName='<%=determined_at_runtime%>'
name="AUTHOR"
>
...
<db:body>
...
<%=((DbFormContext)dbforms.get("AUTHOR")).getCurrentRow().get("AUTHOR_ID")%>
...
</db:dbform