package com.iambookmaster.server.tags; import java.io.IOException; import javax.servlet.jsp.JspException; import com.iambookmaster.server.LocalMessages; public class MessageTag extends MyTagSupport { private static final long serialVersionUID = 1L; private String value; private String arg0; private String arg0Name; private String arg0Property; private String arg1; private String arg1Name; private String arg1Property; private String arg2; private String arg2Name; private String arg2Property; private String arg3; private String arg3Name; private String arg3Property; public String getArg0() { return arg0; } public void setArg0(String arg0) { this.arg0 = arg0; } public String getArg0Name() { return arg0Name; } public void setArg0Name(String arg0Name) { this.arg0Name = arg0Name; } public String getArg0Property() { return arg0Property; } public void setArg0Property(String arg0Property) { this.arg0Property = arg0Property; } public String getArg1() { return arg1; } public void setArg1(String arg1) { this.arg1 = arg1; } public String getArg1Name() { return arg1Name; } public void setArg1Name(String arg1Name) { this.arg1Name = arg1Name; } public String getArg1Property() { return arg1Property; } public void setArg1Property(String arg1Property) { this.arg1Property = arg1Property; } public String getArg2() { return arg2; } public void setArg2(String arg2) { this.arg2 = arg2; } public String getArg2Name() { return arg2Name; } public void setArg2Name(String arg2Name) { this.arg2Name = arg2Name; } public String getArg2Property() { return arg2Property; } public void setArg2Property(String arg2Property) { this.arg2Property = arg2Property; } public String getArg3() { return arg3; } public void setArg3(String arg3) { this.arg3 = arg3; } public String getArg3Name() { return arg3Name; } public void setArg3Name(String arg3Name) { this.arg3Name = arg3Name; } public String getArg3Property() { return arg3Property; } public void setArg3Property(String arg3Property) { this.arg3Property = arg3Property; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public int doStartTag() throws JspException { String key; if (value==null) { Object object = getObjectByNameAndProperty(); if (object instanceof String) { key = (String)object; } else { throw new JspException(getNameAndProperty()+" is not String"); } } else { key = value; } String val; if (arg0==null && arg0Name==null) { val = LocalMessages.getConstant(key,getLocale()); } else if (arg1==null && arg1Name==null) { //1 argument val = LocalMessages.getMessage(key, getLocale(), getArgValue(arg0,arg0Name,arg0Property)); } else if (arg2==null && arg2Name==null) { //2 arguments val = LocalMessages.getMessage(key, getLocale(), getArgValue(arg0,arg0Name,arg0Property), getArgValue(arg1,arg1Name,arg1Property)); } else if (arg3==null && arg3Name==null) { //3 arguments val = LocalMessages.getMessage(key, getLocale(), getArgValue(arg0,arg0Name,arg0Property), getArgValue(arg1,arg1Name,arg1Property), getArgValue(arg2,arg2Name,arg2Property)); } else { //4 arguments val = LocalMessages.getMessage(key, getLocale(), getArgValue(arg0,arg0Name,arg0Property), getArgValue(arg1,arg1Name,arg1Property), getArgValue(arg2,arg2Name,arg2Property), getArgValue(arg3,arg3Name,arg3Property)); } try { pageContext.getOut().append(val); } catch (IOException e) { throw new JspException(e); } return SKIP_BODY; } private String getArgValue(String argValue, String name, String property) throws JspException { if (argValue==null) { Object obj = getObjectByNameAndProperty(true, name, property, null); if (obj instanceof String) { return (String) obj; } else { throw new JspException(getNameAndProperty(name, property)+" is not String"); } } else { return argValue; } } }