Hello,

I am trying to add a character countdown to certain fields in the CMS I work
on. The key is that I only want it to apply to certain fields for certain
asset types. So, in our DB model, both asset A and asset B use the Headline
field, but only asset A needs to worry about SEO and the 50-character target
length we're shooting for. So, in asset A I have

<content:headline label="Headline" required="true" targetChar="50"/>

Whereas in asset B it's just

<content:headline label="Title" required="true"/>

Inside headline.tag I have

<s:set var="id" value="'content.headline'" />
<s:set var="name" value="'content.headline'" />
<%@ attribute name="targetChar"%>

<s:textfield id="%{#id}" name="%{#name}" data-targetChar="${targetChar}"/>

which generates

<input type="text" data-targetChar="50" id="content.headline"
name="content.headline">

on the page for asset A, and the JavaScript takes over from there. However,
when I try to load asset B, I get a compilation error, the relevant portion
of which appears to be

javax.servlet.ServletException: javax.servlet.jsp.JspException:
javax.servlet.jsp.JspException: javax.servlet.jsp.JspException:
Expression parameters.dynamicAttributes[aKey] is undefined on line 26,
column 13 in template/simple/dynamic-attributes.ftl. - Class:
freemarker.core.TemplateObject

File: TemplateObject.java
Method: assertNonNull
Line: 124 - freemarker/core/TemplateObject.java:124:-1

It appears that something is balking whenever targetChar lacks a numerical
value, which I deduced by trying

<s:set name="targetChar" value="50"/>

in headline.tag, which, as expected, worked fine, but neither

<s:set name="targetChar" value=""/>
<s:set name="targetChar" value="test"/>

did; both result in the error pasted above. I'm confused as to where this
requirement is coming from; it's an arbitrary custom attribute I'm trying to
add in, which doesn't appear to get evaluated at all by Struts (since when I
try the data-targetChar="%{#attr.targetChar}" syntax, that literal string
ends up as the value).

In any event, if anyone has any explanation as to what is going on here, and
perhaps a route I might take to achieve my objective, I'd be most
appreciative.

Happy Holidays to everyone.

Thanks,
~~Scott

Reply via email to