Projektowanie warstwy serwera Znaczniki jsp
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 2 Klasa definiująca (I) javax.servlet.jsp.tagext.Tag TagSupport BodyTagSupport
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 3 Klasa definiująca (II) javax.servlet.jsp.tagext.TagSupport org.springframework.web.servlet.tags.RequestContextAwareTag org.springframework.web.servlet.tags.HtmlEscapingAwareTag org.springframework.web.servlet.tags.form.AbstractFormTag org.springframework.web.servlet.tags.form. AbstractDataBoundFormElementTag org.springframework.web.servlet.tags.form.AbstractHtmlElementTag org.springframework.web.servlet.tags.form. AbstractHtmlInputElementTag org.springframework.web.servlet.tags.form.InputTag
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 4 Znaczniki - metody int doEndTag() int doStartTag() int doAfterBody() BodyContent getBodyContent()
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 5 Najprostszy przykład public class PrzykladTag extends TagSupport { public int doStartTag() { JspWriter out = pageContext.getOut(); out.print(Przykladowy tag"); return(SKIP_BODY); }
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 6 Zastosowanie znacznika...
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 7 Tagi z atrybutami public void setAttribute1(String value1) {.... }
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 8 ActionTag (I) public class ActionTag extends TagSupport { private String label; private String option; private String icon; public int doEndTag() throws JspException { return EVAL_PAGE; }....
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 9 ActionTag (II) public int doStartTag() throws JspException { JspWriter out = pageContext.getOut(); out.print("<a class=\"option\); out.print("onclick=\"return submitOption('"); out.print(option); out.print("');\"><img alt=\"\" src=\""); out.print(icon); out.print("\">");...
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 10 ActionTag (III).... out.print(label); out.println(" "); return SKIP_BODY; }
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 11 Tag z ciałem (I) BodyContent: JspWriter getEnclosingWriter() Reader getReader() String getString()
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 12 Tag z ciałem (II) EVAL_BODY_INCLUDE - ponowne przetwarzanie treści tagu SKIP_BODY – zakończenie przetwarzania
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 13 Tag z ciałem - przykład (I) public class FiltrTag extends BodyTagSupport { public int doAfterBody() { BodyContent body = getBodyContent(); String filteredBody = ServletUtilities.filter(body.getString()); JspWriter out = body.getEnclosingWriter(); out.print(filteredBody); return(SKIP_BODY); }
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 14 Button (I) public class ButtonTag extends BodyTagSupport { private String name; private String value; private String type; private Boolean disabled;
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 15 Button (II) public int doEndTag() throws JspException { JspWriter out = pageContext.getOut(); out.print(" "); return EVAL_PAGE; }
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 16 Button (II) public int doStartTag() throws JspException { JspWriter out = pageContext.getOut(); out.print("<button"); if (StringUtils.hasText(value)) { out.print(" value=\""); out.print(value); out.print('"'); }
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 17 Button (III) if (Boolean.TRUE.equals(disabled)) out.print(" disabled=\"disabled\""); out.print(">"); return EVAL_BODY_INCLUDE; }
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 18 Tagi zagnieżdżone (I) public class DrugiTag extends BodyTagSupport { public int doStartTag() throws JspTagException { PierwszyTag parent = (PierwszyTag) findAncestorWithClass(this, PierwszyTag.class);....
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 19 Tagi zagnieżdżone (II) if (parent == null) { throw new JspTagException("nesting error"); } else {... } return(EVAL_BODY_TAG); }
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 20 InputTag (I) public class MyInputTag extends AbstractHtmlInputElementTag { public static final String SIZE_ATTRIBUTE = "size"; public static final String MAXLENGTH_ATTRIBUTE = "maxlength"; public static final String ALT_ATTRIBUTE = "alt"; public static final String ONSELECT_ATTRIBUTE = "onselect"; public static final String READONLY_ATTRIBUTE = "readonly"; public static final String AUTOCOMPLETE_ATTRIBUTE = "autocomplete"; private String size; private String maxlength; private String alt; private String onselect; private String autocomplete;
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 21 InputTag (II) protected int writeTagContent(TagWriter tagWriter) throws JspException { tagWriter.startTag("input"); writeDefaultAttributes(tagWriter); tagWriter.writeAttribute("type", getType()); writeOptionalAttribute(tagWriter, "onkeypress", "return filterKey('[\\\\d\\\\s\\\\,\\\\-]', event)"); writeValue(tagWriter); tagWriter.closeTag(); return EVAL_PAGE; }
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 22 InputTag (III) protected void writeValue(TagWriter tagWriter) throws JspException { tagWriter.writeAttribute("value", getDisplayString(getBoundValue(), getPropertyEditor())); } protected String getType() { return "text"; }
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 23 InputTag (disabled) (I) protected boolean isDisabled() throws JspException { String dis = (String) evaluate(DISABLED_ATTRIBUTE, getDisabled()); Boolean canEdit = (Boolean) pageContext.getSession().getAttribute(canEdit); if ( canEdit != null && canEdit == false) return true;.....
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 24 InputTag (disabled) (II) if (dis == null ) { Set allowedFields = (Set ) request.getAttribute(allowed); if (allowedFields != null) { if (!allowedFields.contains(getNestedPath()+ getPath())) return true; } return "true".equals(dis); }
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 25 Tag - konfiguracja (web.xml) /WEB-INF/mytags.tld
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 26 Tag - konfiguracja (I) mytags.tld mytags 2.0 mytags
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 27 Tag - konfiguracja (II) przyklad dmcs.tags.PrzykladTag Tag przykładowy JSP atrybut1 true
Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 28 Tag - konfiguracja (III) Icon option action tags.ActionTag empty label false true