/** {@inheritDoc} */ @Override public void begin(String namespace, String name, Attributes attributes) throws Exception { Definition definition = (Definition) digester.peek(); definition.setName(attributes.getValue("name")); definition.setPreparer(attributes.getValue("preparer")); definition.setExtends(attributes.getValue("extends")); String template = attributes.getValue("template"); Attribute attribute = Attribute.createTemplateAttribute(template); attribute.setExpression(attributes.getValue("templateExpression")); attribute.setRole(attributes.getValue("role")); String templateType = attributes.getValue("templateType"); if (templateType != null) { attribute.setRenderer(templateType); } definition.setTemplateAttribute(attribute); } }
/** {@inheritDoc} */ @Override public void begin(String namespace, String name, Attributes attributes) { Definition definition = (Definition) digester.peek(); definition.setName(attributes.getValue("name")); definition.setPreparer(attributes.getValue("preparer")); String extendsAttribute = attributes.getValue("extends"); definition.setExtends(extendsAttribute); String template = attributes.getValue("template"); Attribute attribute = Attribute.createTemplateAttribute(template); attribute.setExpressionObject(Expression .createExpressionFromDescribedExpression(attributes .getValue("templateExpression"))); attribute.setRole(attributes.getValue("role")); String templateType = attributes.getValue("templateType"); if (templateType != null) { attribute.setRenderer(templateType); } else if (extendsAttribute != null && templateType == null) { attribute.setRenderer(null); } definition.setTemplateAttribute(attribute); } }
/** * Creates the definition to store. * * @param name The name of the definition to create. If not specified, an * anonymous definition will be created. * @param template The template of this definition. * @param role A comma-separated list of roles. If present, the definition * will be rendered only if the current user belongs to one of the roles. * @param extendsParam The definition name that this definition extends. * @param preparer The preparer to use to invoke before the definition is * rendered. * @return The created definition. */ private Definition createDefinition(String name, String template, String role, String extendsParam, String preparer) { Definition definition = new Definition(); definition.setName(name); Attribute templateAttribute = Attribute .createTemplateAttribute(template); templateAttribute.setRole(role); definition.setTemplateAttribute(templateAttribute); definition.setExtends(extendsParam); definition.setPreparer(preparer); return definition; }
/** {@inheritDoc} */ public int doStartTag() throws TilesJspException { definition = new Definition(); definition.setName(name); Attribute templateAttribute = Attribute .createTemplateAttribute(template); templateAttribute.setRole(role); definition.setTemplateAttribute(templateAttribute); definition.setExtends(extend); definition.setPreparer(preparer); TilesContainer c = JspUtil.getCurrentContainer(pageContext); if (c == null) { throw new TilesJspException("TilesContainer not initialized"); } if (!(c instanceof MutableTilesContainer)) { throw new TilesJspException( "Unable to define definition for a " + "container which does not implement MutableTilesContainer"); } container = (MutableTilesContainer) c; return EVAL_BODY_INCLUDE; }
public void testRenderFragment_InheritCascadedAttribute() throws Exception { ApplicationContext tilesAppContext = new WildcardServletApplicationContext(servletContext); Request tilesRequest = new ServletRequest(tilesAppContext, request, response); BasicTilesContainer container = (BasicTilesContainer) TilesAccess.getContainer(tilesAppContext); Definition definition = container.getDefinitionsFactory().getDefinition("search.body", tilesRequest); definition.setPreparer(AttributeTestingPreparer.class.getName()); setupStaticWebApplicationContext(); request.addHeader("Accept", DefaultAjaxHandler.AJAX_ACCEPT_CONTENT_TYPE); request.addParameter("fragments", "body"); ajaxTilesView.setUrl("search"); ajaxTilesView.afterPropertiesSet(); ajaxTilesView.renderMergedOutputModel(new HashMap<>(), request, response); assertTrue(AttributeTestingPreparer.invoked); }
/** * Creates a definition given its representation with wildcards. * * @param d The definition to replace. * @param name The name of the definition to be created. * @param vars The variables to be substituted. * @return The definition that can be rendered. * @since 2.1.0 */ protected Definition replaceDefinition(Definition d, String name, Map<Integer, String> vars) { Definition nudef = new Definition(); nudef.setExtends(replace(d.getExtends(), vars)); nudef.setName(name); nudef.setPreparer(replace(d.getPreparer(), vars)); nudef.setTemplateAttribute(replaceVarsInAttribute(d .getTemplateAttribute(), vars)); Set<String> localAttributeNames = d.getLocalAttributeNames(); if (localAttributeNames != null && !localAttributeNames.isEmpty()) { for (String attributeName : localAttributeNames) { Attribute attr = d.getLocalAttribute(attributeName); Attribute nuattr = replaceVarsInAttribute(attr, vars); nudef.putAttribute(replace(attributeName, vars), nuattr); } } return nudef; }
nudef.setPreparer(replace(d.getPreparer(), vars)); Attribute templateAttribute = d.getTemplateAttribute(); if (templateAttribute != null) {
definition.setPreparer(preparer);