Update of /var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib
In directory james.mmbase.org:/tmp/cvs-serv11882
Modified Files:
Tag: MMBase-1_8
FieldInfoTag.java FieldReferrerTag.java
Log Message:
ported some stuff from head, to make 'datatype' attribute work a bit better
See also:
http://cvs.mmbase.org/viewcvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib
Index: FieldInfoTag.java
===================================================================
RCS file:
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/FieldInfoTag.java,v
retrieving revision 1.97.2.7
retrieving revision 1.97.2.8
diff -u -b -r1.97.2.7 -r1.97.2.8
--- FieldInfoTag.java 19 Aug 2008 09:38:07 -0000 1.97.2.7
+++ FieldInfoTag.java 19 Aug 2008 12:34:12 -0000 1.97.2.8
@@ -43,7 +43,7 @@
* @author Michiel Meeuwissen
* @author Jaco de Groot
* @author Gerard van de Looi
- * @version $Id: FieldInfoTag.java,v 1.97.2.7 2008/08/19 09:38:07 michiel Exp $
+ * @version $Id: FieldInfoTag.java,v 1.97.2.8 2008/08/19 12:34:12 michiel Exp $
*/
public class FieldInfoTag extends FieldReferrerTag implements Writer {
private static Logger log;
@@ -269,20 +269,32 @@
findWriter(false); // just to call haveBody;
Node node = null;
- final DataType dt = getDataType();
- if (dt == null) {
- fieldProvider = findFieldProvider();
- } else {
+ Field field;
+ DataType dataType = getDataType();
+ fieldProvider =
+ "".equals(parentFieldId.getValue(this)) // field="" means
explicitely don't use a field provider, so is not the same as omitting the
attribue altogether
+ ? null : findFieldProvider(dataType == null);
+ if (fieldProvider == null) {
+ if (dataType == null) throw new JspTagException("No field provider
found (" + parentFieldId + ") nor datatype specified");
+ final DataType dt = dataType;
fieldProvider = new FieldProvider() {
private final Field f = new DataTypeField(getCloudVar(),
dt);
public Field getFieldVar() { return f; }
public String getId() { return null; }
- public Node getNodeVar() { return null; }
+ public Node getNodeVar() throws JspTagException { return
FieldInfoTag.this.getNode(); }
};
- }
- Field field = fieldProvider.getFieldVar();
+ field = fieldProvider.getFieldVar();
+ } else {
+ field = fieldProvider.getFieldVar();
if (field == null) throw new JspTagException("No field found in " +
fieldProvider);
+ if (dataType != null) {
+ field = new DataTypeField(field, dataType);
+ } else {
+ dataType = field.getDataType();
+ }
+ }
+
String fieldName = field.getName();
{
Index: FieldReferrerTag.java
===================================================================
RCS file:
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/FieldReferrerTag.java,v
retrieving revision 1.9
retrieving revision 1.9.2.1
diff -u -b -r1.9 -r1.9.2.1
--- FieldReferrerTag.java 20 Jul 2005 14:57:55 -0000 1.9
+++ FieldReferrerTag.java 19 Aug 2008 12:34:12 -0000 1.9.2.1
@@ -23,12 +23,12 @@
*
* @author Michiel Meeuwissen
* @see FieldInfoTag
- * @version $Id: FieldReferrerTag.java,v 1.9 2005/07/20 14:57:55 michiel Exp $
+ * @version $Id: FieldReferrerTag.java,v 1.9.2.1 2008/08/19 12:34:12 michiel
Exp $
*/
public abstract class FieldReferrerTag extends NodeReferrerTag {
- private Attribute parentFieldId = Attribute.NULL;
+ protected Attribute parentFieldId = Attribute.NULL;
public void setField(String field) throws JspTagException {
parentFieldId = getAttribute(field);
@@ -39,14 +39,19 @@
* @return the FieldProvider if found else an exception.
*
*/
- public FieldProvider findFieldProvider() throws JspTagException {
- FieldProvider fp = (FieldProvider) findParentTag(FieldProvider.class,
(String) parentFieldId.getValue(this));
+ public FieldProvider findFieldProvider(boolean ex) throws JspTagException {
+ FieldProvider fp = (FieldProvider) findParentTag(FieldProvider.class,
(String) parentFieldId.getValue(this), ex);
if (fp instanceof Writer) {
((Writer) fp).haveBody();
}
return fp;
}
+ public FieldProvider findFieldProvider() throws JspTagException {
+ return findFieldProvider(true);
+ }
+
+
protected Field getField() throws JspTagException {
return findFieldProvider().getFieldVar();
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs