It's not a secret anymore!
The moose likes Struts and the fly likes using scriptelet in  s:if Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Frameworks » Struts
Bookmark "using scriptelet in  s:if" Watch "using scriptelet in  s:if" New topic

using scriptelet in s:if

D kukreja
Ranch Hand

Joined: Jan 29, 2008
Posts: 39
I have a value in one of the java veriables in jsp. and I want to use it to compare it with one of the value coming from my action. I know values are same but <s:if> never returns true.
This works:
if(languageSelected1.equals("9")) { %>
<s:if test='key.equals("9")'>
comes here fine.

And same this doesn't work ...if I write it like this
<s:if test='key.equals("<%=languageSelected1%>")'>
never comes here.

I tried to use <s:set to set the value, but that didn't help either. Heres the code with <s:set>
<s:set name="templang" value="<%=languageSelected1%>">
//some code here
I tried follwing and nothing worked
<s:if test='key.equals(#templang)'>
<s:if test='#templang=="${key}"'>
<s:if test='%{#templang == key}'>
<s:if test='%{#templang == "${key}"}'>
is there something wrong with the usage ?
Tom Rispoli
Ranch Hand

Joined: Aug 29, 2008
Posts: 349
I don't know of any struts2 tags that allow you to use scriptlets in its attributes. You need to get the variable into a location that can be accessed by OGNL. You could put the value into one of the scoped objects (probably the request object) and then OGNL should be able to access it. Or you could write some scriptlet code to push the value onto the stack, but I think putting the value into the request makes the most sense.
D kukreja
Ranch Hand

Joined: Jan 29, 2008
Posts: 39
after doing <s:set > I did try to print it using <s roperty> and it was printing correctly. So, I assume atleast <s:set> is one struts tag that identify and evaluate scriptlet.
I agree. Here's the link:
subject: using scriptelet in s:if
jQuery in Action, 3rd edition