/* * J2J.java * * Created on 2006年10月2日, 下午7:16 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */
package net.vlinux.tag.j2j. import javax.servlet.jsp.*. import javax.servlet.jsp.tagext.*. import java.lang.reflect.*. import java.util.*.
/** * * @author vlinux */ public class NewObject extends TagSupport { private String dist. private String distName. private String scope. private String source.
private List<Method> getGetMethods( Object aObject ) { Method[] array = aObject.getClass().getMethods(). List<Method> list = new ArrayList<Method>(). for( int i=0.i<array.length.i ){ String methodName = array[i].getName(). if( methodName.matches("get.*") ) list.add(array[i]). } return list. }
private String getFieldName( Method aMethod){ String methodName = aMethod.getName(). String subName = methodName.substring(3,methodName.length()). return subName.toLowerCase(). }
private Object getSourceObject(String scope, String source){ if( scope.equals("request") ){ return pageContext.getRequest().getAttribute(source). }else if( scope.equals("session") ){ return pageContext.getSession().getAttribute(source). }else if( scope.equals("page") ){ return pageContext.getAttribute(source). }else{ System.out.println("xxx"). return null. } }
public int doStartTag(){ JspWriter out = pageContext.getOut(). Object sourceObject = getSourceObject(getScope(),getSource()). List list = getGetMethods( sourceObject ). try{ out.println( "<script>" ). out.println( "\tvar " getDistName() " = new " getDist() "()."). for( int i=0.i<list.size().i ){ try{ String fieldName = getFieldName((Method)list.get(i)). String value = ((Method)list.get(i)).invoke( getSourceObject(getScope(),getSource())).toString(). out.println( "\t" getDistName() "." fieldName " = \"" value "\""). }catch(Exception e){ // } } out.println( "</script>" ). }catch( java.io.IOException ioe){ // } return (EVAL_BODY_INCLUDE). } public int doEndTag(){ return (EVAL_PAGE). }
public String getDist() { return dist. }
public void setDist(String dist) { this.dist = dist. }
public String getDistName() { return distName. }
public void setDistName(String distName) { this.distName = distName. }
public String getScope() { return scope. }
public void setScope(String scope) { this.scope = scope. }
public String getSource() { return source. }
public void setSource(String source) { this.source = source. } } |