How to process string value after 'el' processing

Discussion in 'Java' started by Berlin Brown, Jan 3, 2007.

  1. Berlin  Brown

    Berlin Brown Guest

    I have a jsp jstl question. It is actually kind of simple, but I still
    couldnt get an answer. And it is more of a design question.

    How do you do 'processing' or manipulation of a string value 'after' it
    has been processed through 'el' jstl?


    "I am having trouble doing basic view manipulation on data output from
    the expression language. I dont 'think' I need custom tags for this,
    and dont think this logic should occur at the controller or model? But
    for example, if I want to modify a value before it is display to the
    user but after it has been evaluated: Ie."

    This is my current approach.
    Would it have been more logical to place:

    "<jsp:useBean id="concatValue"
    class="org.spirit.servlet.bean.BotListConcatValue" />
    <jsp:setProperty name="concatValue" property="maxLen" value="20" />"

    Within the 'forEach' bracket?

    Logic in the bean:

    public String getWord() {
    if (word != null && (word.length() > (maxLen + 3))) {
    word = word.substring(0, (maxLen - 1)) + "...";
    }
    return word;
    }

    <jsp:useBean id="concatValue"
    class="org.spirit.servlet.bean.BotListConcatValue" />
    <jsp:setProperty name="concatValue" property="maxLen" value="20" />
    <c:forEach items="${linklistings}"
    var="listing" varStatus="status">
    <c:set target="${concatValue}" property="word"
    value="${listing.urlTitle}"/>
    <c:eek:ut value="${concatValue.word}" />
    </c:forEach>
     
    Berlin Brown, Jan 3, 2007
    #1
    1. Advertising

  2. Berlin  Brown

    Daniel Pitts Guest

    Berlin Brown wrote:
    > I have a jsp jstl question. It is actually kind of simple, but I still
    > couldnt get an answer. And it is more of a design question.
    >
    > How do you do 'processing' or manipulation of a string value 'after' it
    > has been processed through 'el' jstl?
    >
    >
    > "I am having trouble doing basic view manipulation on data output from
    > the expression language. I dont 'think' I need custom tags for this,
    > and dont think this logic should occur at the controller or model? But
    > for example, if I want to modify a value before it is display to the
    > user but after it has been evaluated: Ie."
    >
    > This is my current approach.
    > Would it have been more logical to place:
    >
    > "<jsp:useBean id="concatValue"
    > class="org.spirit.servlet.bean.BotListConcatValue" />
    > <jsp:setProperty name="concatValue" property="maxLen" value="20" />"
    >
    > Within the 'forEach' bracket?
    >
    > Logic in the bean:
    >
    > public String getWord() {
    > if (word != null && (word.length() > (maxLen + 3))) {
    > word = word.substring(0, (maxLen - 1)) + "...";
    > }
    > return word;
    > }
    >
    > <jsp:useBean id="concatValue"
    > class="org.spirit.servlet.bean.BotListConcatValue" />
    > <jsp:setProperty name="concatValue" property="maxLen" value="20" />
    > <c:forEach items="${linklistings}"
    > var="listing" varStatus="status">
    > <c:set target="${concatValue}" property="word"
    > value="${listing.urlTitle}"/>
    > <c:eek:ut value="${concatValue.word}" />
    > </c:forEach>

    You don't NEED a special tag for this, but I would probably implement
    it that way. Or make it a el function. Either way, adding it the the
    TLD is the right approach, instead of using the bean the way you do.

    I agree, it doesn't really belong in the controller or the model, as it
    is specific to the rendering (i.e., view) of the data.

    Creating a TLD isn't too hard, and it is very easy to add an el
    function (you can basically use a static function).

    public static String trim(String word) {
    if (word != null && (word.length() > (maxLen + 3))) {
    word = word.substring(0, (maxLen - 1)) + "...";
    return word;
    }

    and use ${mytld:trim(listing.urlTitle)} to display it.

    Hope this helps,
    Daniel.
     
    Daniel Pitts, Jan 3, 2007
    #2
    1. Advertising

  3. Berlin  Brown

    Berlin Brown Guest

    Daniel Pitts wrote:
    > Berlin Brown wrote:
    > > I have a jsp jstl question. It is actually kind of simple, but I still
    > > couldnt get an answer. And it is more of a design question.
    > >
    > > How do you do 'processing' or manipulation of a string value 'after' it
    > > has been processed through 'el' jstl?
    > >
    > >
    > > "I am having trouble doing basic view manipulation on data output from
    > > the expression language. I dont 'think' I need custom tags for this,
    > > and dont think this logic should occur at the controller or model? But
    > > for example, if I want to modify a value before it is display to the
    > > user but after it has been evaluated: Ie."
    > >
    > > This is my current approach.
    > > Would it have been more logical to place:
    > >
    > > "<jsp:useBean id="concatValue"
    > > class="org.spirit.servlet.bean.BotListConcatValue" />
    > > <jsp:setProperty name="concatValue" property="maxLen" value="20" />"
    > >
    > > Within the 'forEach' bracket?
    > >
    > > Logic in the bean:
    > >
    > > public String getWord() {
    > > if (word != null && (word.length() > (maxLen + 3))) {
    > > word = word.substring(0, (maxLen - 1)) + "...";
    > > }
    > > return word;
    > > }
    > >
    > > <jsp:useBean id="concatValue"
    > > class="org.spirit.servlet.bean.BotListConcatValue" />
    > > <jsp:setProperty name="concatValue" property="maxLen" value="20" />
    > > <c:forEach items="${linklistings}"
    > > var="listing" varStatus="status">
    > > <c:set target="${concatValue}" property="word"
    > > value="${listing.urlTitle}"/>
    > > <c:eek:ut value="${concatValue.word}" />
    > > </c:forEach>

    > You don't NEED a special tag for this, but I would probably implement
    > it that way. Or make it a el function. Either way, adding it the the
    > TLD is the right approach, instead of using the bean the way you do.
    >
    > I agree, it doesn't really belong in the controller or the model, as it
    > is specific to the rendering (i.e., view) of the data.
    >
    > Creating a TLD isn't too hard, and it is very easy to add an el
    > function (you can basically use a static function).
    >
    > public static String trim(String word) {
    > if (word != null && (word.length() > (maxLen + 3))) {
    > word = word.substring(0, (maxLen - 1)) + "...";
    > return word;
    > }
    >
    > and use ${mytld:trim(listing.urlTitle)} to display it.
    >
    > Hope this helps,
    > Daniel.



    I tried that, but I dont think the version of TLD I am using supports
    'functions'. I am using pre JSP 2.0 code and I believe jstl 1.2?
     
    Berlin Brown, Jan 3, 2007
    #3
  4. Berlin  Brown

    Daniel Pitts Guest

    Berlin Brown wrote:
    > Daniel Pitts wrote:
    > > Berlin Brown wrote:
    > > > I have a jsp jstl question. It is actually kind of simple, but I still
    > > > couldnt get an answer. And it is more of a design question.
    > > >
    > > > How do you do 'processing' or manipulation of a string value 'after' it
    > > > has been processed through 'el' jstl?
    > > >
    > > >
    > > > "I am having trouble doing basic view manipulation on data output from
    > > > the expression language. I dont 'think' I need custom tags for this,
    > > > and dont think this logic should occur at the controller or model? But
    > > > for example, if I want to modify a value before it is display to the
    > > > user but after it has been evaluated: Ie."
    > > >
    > > > This is my current approach.
    > > > Would it have been more logical to place:
    > > >
    > > > "<jsp:useBean id="concatValue"
    > > > class="org.spirit.servlet.bean.BotListConcatValue" />
    > > > <jsp:setProperty name="concatValue" property="maxLen" value="20" />"
    > > >
    > > > Within the 'forEach' bracket?
    > > >
    > > > Logic in the bean:
    > > >
    > > > public String getWord() {
    > > > if (word != null && (word.length() > (maxLen + 3))) {
    > > > word = word.substring(0, (maxLen - 1)) + "...";
    > > > }
    > > > return word;
    > > > }
    > > >
    > > > <jsp:useBean id="concatValue"
    > > > class="org.spirit.servlet.bean.BotListConcatValue" />
    > > > <jsp:setProperty name="concatValue" property="maxLen" value="20" />
    > > > <c:forEach items="${linklistings}"
    > > > var="listing" varStatus="status">
    > > > <c:set target="${concatValue}" property="word"
    > > > value="${listing.urlTitle}"/>
    > > > <c:eek:ut value="${concatValue.word}" />
    > > > </c:forEach>

    > > You don't NEED a special tag for this, but I would probably implement
    > > it that way. Or make it a el function. Either way, adding it the the
    > > TLD is the right approach, instead of using the bean the way you do.
    > >
    > > I agree, it doesn't really belong in the controller or the model, as it
    > > is specific to the rendering (i.e., view) of the data.
    > >
    > > Creating a TLD isn't too hard, and it is very easy to add an el
    > > function (you can basically use a static function).
    > >
    > > public static String trim(String word) {
    > > if (word != null && (word.length() > (maxLen + 3))) {
    > > word = word.substring(0, (maxLen - 1)) + "...";
    > > return word;
    > > }
    > >
    > > and use ${mytld:trim(listing.urlTitle)} to display it.
    > >
    > > Hope this helps,
    > > Daniel.

    >
    >
    > I tried that, but I dont think the version of TLD I am using supports
    > 'functions'. I am using pre JSP 2.0 code and I believe jstl 1.2?


    Okay, then a tag is the way to go.
    Or, *gasp* upgrading to the latest standard.
     
    Daniel Pitts, Jan 3, 2007
    #4
  5. You can try using the JSTL functions library to achieve this via EL.
    You can use fn:length to get the length, and fn:substring to get the
    subset.

    -cheers,
    Manish
     
    Manish Pandit, Jan 3, 2007
    #5
  6. Berlin  Brown

    Berlin Brown Guest

    Daniel Pitts wrote:
    > Berlin Brown wrote:
    > > Daniel Pitts wrote:
    > > > Berlin Brown wrote:
    > > > > I have a jsp jstl question. It is actually kind of simple, but I still
    > > > > couldnt get an answer. And it is more of a design question.
    > > > >
    > > > > How do you do 'processing' or manipulation of a string value 'after' it
    > > > > has been processed through 'el' jstl?
    > > > >
    > > > >
    > > > > "I am having trouble doing basic view manipulation on data output from
    > > > > the expression language. I dont 'think' I need custom tags for this,
    > > > > and dont think this logic should occur at the controller or model? But
    > > > > for example, if I want to modify a value before it is display to the
    > > > > user but after it has been evaluated: Ie."
    > > > >
    > > > > This is my current approach.
    > > > > Would it have been more logical to place:
    > > > >
    > > > > "<jsp:useBean id="concatValue"
    > > > > class="org.spirit.servlet.bean.BotListConcatValue" />
    > > > > <jsp:setProperty name="concatValue" property="maxLen" value="20" />"
    > > > >
    > > > > Within the 'forEach' bracket?
    > > > >
    > > > > Logic in the bean:
    > > > >
    > > > > public String getWord() {
    > > > > if (word != null && (word.length() > (maxLen + 3))) {
    > > > > word = word.substring(0, (maxLen - 1)) + "...";
    > > > > }
    > > > > return word;
    > > > > }
    > > > >
    > > > > <jsp:useBean id="concatValue"
    > > > > class="org.spirit.servlet.bean.BotListConcatValue" />
    > > > > <jsp:setProperty name="concatValue" property="maxLen" value="20" />
    > > > > <c:forEach items="${linklistings}"
    > > > > var="listing" varStatus="status">
    > > > > <c:set target="${concatValue}" property="word"
    > > > > value="${listing.urlTitle}"/>
    > > > > <c:eek:ut value="${concatValue.word}" />
    > > > > </c:forEach>
    > > > You don't NEED a special tag for this, but I would probably implement
    > > > it that way. Or make it a el function. Either way, adding it the the
    > > > TLD is the right approach, instead of using the bean the way you do.
    > > >
    > > > I agree, it doesn't really belong in the controller or the model, as it
    > > > is specific to the rendering (i.e., view) of the data.
    > > >
    > > > Creating a TLD isn't too hard, and it is very easy to add an el
    > > > function (you can basically use a static function).
    > > >
    > > > public static String trim(String word) {
    > > > if (word != null && (word.length() > (maxLen + 3))) {
    > > > word = word.substring(0, (maxLen - 1)) + "...";
    > > > return word;
    > > > }
    > > >
    > > > and use ${mytld:trim(listing.urlTitle)} to display it.
    > > >
    > > > Hope this helps,
    > > > Daniel.

    > >
    > >
    > > I tried that, but I dont think the version of TLD I am using supports
    > > 'functions'. I am using pre JSP 2.0 code and I believe jstl 1.2?

    >
    > Okay, then a tag is the way to go.
    > Or, *gasp* upgrading to the latest standard.


    Yea, it was a fight; but I updated my app to most recent specs. It was
    amazing how different things are.


    Berlin Brown
    http://www.newspiritcompany.com/botlist/
    Botlist - Ad Listings
     
    Berlin Brown, Jan 4, 2007
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Peebster_99
    Replies:
    5
    Views:
    18,937
    Mladen Adamovic
    Mar 7, 2004
  2. Hubert Hung-Hsien Chang
    Replies:
    2
    Views:
    526
    Michael Foord
    Sep 17, 2004
  3. Earl Eiland
    Replies:
    3
    Views:
    536
    Peter Hansen
    May 16, 2005
  4. Trent Mick
    Replies:
    0
    Views:
    487
    Trent Mick
    May 16, 2005
  5. Replies:
    9
    Views:
    613
    James Kanze
    Sep 19, 2007
Loading...

Share This Page