You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2014/09/23 23:03:12 UTC
git commit: Adds BeanInfo to allow define class attribute in JSPs
Repository: struts
Updated Branches:
refs/heads/develop 3b9d58614 -> 587e3a41b
Adds BeanInfo to allow define class attribute in JSPs
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/587e3a41
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/587e3a41
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/587e3a41
Branch: refs/heads/develop
Commit: 587e3a41b1d306eb246aa39d71dce469f4e50e9d
Parents: 3b9d586
Author: Lukasz Lenart <lu...@apache.org>
Authored: Tue Sep 23 23:02:31 2014 +0200
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Tue Sep 23 23:02:31 2014 +0200
----------------------------------------------------------------------
.../webapp/WEB-INF/jsp/example/HelloWorld.jsp | 2 +-
.../struts2/views/jsp/ui/AbstractUITag.java | 7 +-
.../views/jsp/ui/AbstractUITagBeanInfo.java | 70 ++++++++++++++++++++
.../apache/struts2/views/jsp/ui/AnchorTest.java | 10 +++
.../struts2/views/jsp/ui/ComponentTest.java | 2 +-
.../struts2/views/jsp/ui/Component-param.txt | 2 +-
.../test/resources/template/test/Component.ftl | 2 +-
.../dojo/views/jsp/ui/TabbedPanelTag.java | 2 +-
8 files changed, 89 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/587e3a41/apps/blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp
----------------------------------------------------------------------
diff --git a/apps/blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp b/apps/blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp
index f10fc02..17b0963 100644
--- a/apps/blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp
+++ b/apps/blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp
@@ -14,7 +14,7 @@
<s:url id="url" action="HelloWorld">
<s:param name="request_locale">en</s:param>
</s:url>
- <s:a href="%{url}">English</s:a>
+ <s:a class="test" href="%{url}">English</s:a>
</li>
<li>
<s:url id="url" action="HelloWorld">
http://git-wip-us.apache.org/repos/asf/struts/blob/587e3a41/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
index e57932a..65b80cf 100644
--- a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
+++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
@@ -44,7 +44,7 @@ public abstract class AbstractUITag extends ComponentTagSupport implements Dynam
protected String disabled;
protected String label;
protected String labelSeparator;
- protected String labelPosition;
+ protected String labelposition;
protected String requiredPosition;
protected String errorPosition;
protected String name;
@@ -96,7 +96,7 @@ public abstract class AbstractUITag extends ComponentTagSupport implements Dynam
uiBean.setDisabled(disabled);
uiBean.setLabel(label);
uiBean.setLabelSeparator(labelSeparator);
- uiBean.setLabelposition(labelPosition);
+ uiBean.setLabelposition(labelposition);
uiBean.setRequiredPosition(requiredPosition);
uiBean.setErrorPosition(errorPosition);
uiBean.setName(name);
@@ -148,6 +148,7 @@ public abstract class AbstractUITag extends ComponentTagSupport implements Dynam
public void setCssStyle(String cssStyle) {
this.cssStyle = cssStyle;
}
+
public void setStyle(String cssStyle) {
this.cssStyle = cssStyle;
}
@@ -173,7 +174,7 @@ public abstract class AbstractUITag extends ComponentTagSupport implements Dynam
}
public void setLabelposition(String labelPosition) {
- this.labelPosition = labelPosition;
+ this.labelposition = labelPosition;
}
public void setRequiredPosition(String requiredPosition) {
http://git-wip-us.apache.org/repos/asf/struts/blob/587e3a41/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITagBeanInfo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITagBeanInfo.java b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITagBeanInfo.java
new file mode 100644
index 0000000..87e4105
--- /dev/null
+++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITagBeanInfo.java
@@ -0,0 +1,70 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.struts2.views.jsp.ui;
+
+import com.opensymphony.xwork2.util.logging.Logger;
+import com.opensymphony.xwork2.util.logging.LoggerFactory;
+
+import java.beans.PropertyDescriptor;
+import java.beans.SimpleBeanInfo;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Describes properties supported by the AbstractUITag - base class for all UI tags
+ * This bases on HtmlTagSupportBeanInfo class from StripesFramework - thanks!
+ */
+public class AbstractUITagBeanInfo extends SimpleBeanInfo {
+
+ private static final Logger LOG = LoggerFactory.getLogger(AbstractUITagBeanInfo.class);
+
+ @Override
+ public PropertyDescriptor[] getPropertyDescriptors() {
+ try {
+ List<PropertyDescriptor> descriptors = new ArrayList<PropertyDescriptor>();
+
+ // Add the tricky one first
+ Method setter = AbstractUITag.class.getMethod("setCssClass", String.class);
+ descriptors.add(new PropertyDescriptor("class", null, setter));
+ descriptors.add(new PropertyDescriptor("cssClass", null, setter));
+
+ for (Field field : AbstractUITag.class.getDeclaredFields()) {
+ String fieldName = field.getName();
+ if (!"dynamicAttributes".equals(fieldName)) {
+ String setterName = "set" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
+ setter = AbstractUITag.class.getMethod(setterName, String.class);
+ descriptors.add(new PropertyDescriptor(fieldName, null, setter));
+ }
+ }
+
+ PropertyDescriptor[] array = new PropertyDescriptor[descriptors.size()];
+ return descriptors.toArray(array);
+ } catch (Exception e) {
+ // This is crazy talk, we're only doing things that should always succeed
+ LOG.fatal("Could not construct bean info for AbstractUITag. This is very bad.", e);
+ return null;
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/struts/blob/587e3a41/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java
index bd007e9..2323164 100644
--- a/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java
+++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java
@@ -25,12 +25,22 @@ import org.apache.struts2.TestAction;
import org.apache.struts2.views.jsp.AbstractUITagTest;
import javax.servlet.jsp.JspException;
+import java.beans.BeanInfo;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
/**
*/
public class AnchorTest extends AbstractUITagTest {
+ public void testBeanInfo() throws Exception {
+ BeanInfo beanInfo = Introspector.getBeanInfo(AbstractUITag.class);
+ for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+ System.out.println(pd.getName() + ": write = " + pd.getWriteMethod() + ", read = " + pd.getReadMethod());
+ }
+ }
+
public void testSimple() throws Exception {
createAction();
http://git-wip-us.apache.org/repos/asf/struts/blob/587e3a41/core/src/test/java/org/apache/struts2/views/jsp/ui/ComponentTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/ComponentTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/ComponentTest.java
index 124829b..1d68644 100644
--- a/core/src/test/java/org/apache/struts2/views/jsp/ui/ComponentTest.java
+++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/ComponentTest.java
@@ -109,7 +109,7 @@ public class ComponentTest extends AbstractUITagTest {
tag.getComponent().addParameter("argle", "bargle");
tag.getComponent().addParameter("glip", "glop");
tag.getComponent().addParameter("array", new String[]{"a", "b", "c"});
- tag.getComponent().addParameter("obj", tag);
+ tag.getComponent().addParameter("objClass", tag.getClass().getName());
tag.doEndTag();
// System.out.println(writer);
http://git-wip-us.apache.org/repos/asf/struts/blob/587e3a41/core/src/test/resources/org/apache/struts2/views/jsp/ui/Component-param.txt
----------------------------------------------------------------------
diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/Component-param.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Component-param.txt
index 9d257f6..9f1580b 100644
--- a/core/src/test/resources/org/apache/struts2/views/jsp/ui/Component-param.txt
+++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Component-param.txt
@@ -1,7 +1,7 @@
param hello = world
param argle = bargle
param glip = glop
-param obj.Class = class org.apache.struts2.views.jsp.ui.ComponentTag
+param obj.Class = org.apache.struts2.views.jsp.ui.ComponentTag
param array[0] = a
param array[1] = b
http://git-wip-us.apache.org/repos/asf/struts/blob/587e3a41/core/src/test/resources/template/test/Component.ftl
----------------------------------------------------------------------
diff --git a/core/src/test/resources/template/test/Component.ftl b/core/src/test/resources/template/test/Component.ftl
index 3d70030..c4d1c27 100644
--- a/core/src/test/resources/template/test/Component.ftl
+++ b/core/src/test/resources/template/test/Component.ftl
@@ -23,7 +23,7 @@
param hello = ${parameters.hello}
param argle = ${parameters.argle}
param glip = ${parameters.glip}
-param obj.Class = ${parameters.obj.class}
+param obj.Class = ${parameters.objClass}
<#list parameters.array as element>
param array[${element_index}] = ${element}
http://git-wip-us.apache.org/repos/asf/struts/blob/587e3a41/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/TabbedPanelTag.java
----------------------------------------------------------------------
diff --git a/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/TabbedPanelTag.java b/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/TabbedPanelTag.java
index d70db29..098b40d 100644
--- a/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/TabbedPanelTag.java
+++ b/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/TabbedPanelTag.java
@@ -56,7 +56,7 @@ public class TabbedPanelTag extends AbstractClosingTag {
tabbedPanel.setSelectedTab(selectedTab);
tabbedPanel.setCloseButton(closeButton);
tabbedPanel.setDoLayout(doLayout);
- tabbedPanel.setLabelposition(labelPosition);
+ tabbedPanel.setLabelposition(labelposition);
tabbedPanel.setTemplateCssPath(templateCssPath);
tabbedPanel.setBeforeSelectTabNotifyTopics(beforeSelectTabNotifyTopics);
tabbedPanel.setAfterSelectTabNotifyTopics(afterSelectTabNotifyTopics);