سؤال

مرحبًا بالجميع ، أحاول مقارنة قيمتين باستخدام Struts2 S: إذا كانت العلامة ولكنها لا تعمل. إذا قمت بترميز القيم التي تعمل بها ولكني أريد أن تكون ديناميكية.

سلسلة المتغيرات هي من نوع سلسلة. المتغير CurrentLongValue هو من النوع الطويل.

<s:set var="stringValue" value="order"/>
<s:iterator value="listTest">
 <s:set var="currentLongValue" value="value"/>

 <s:if test="#currentLongValue.toString() == #stringValue" >
   //Do something      
 </s:if>
 <s:else>
 //Do something else
 </s:else>

</s:iterator>

بالنسبة لـ S: إذا كنت قد حاولت tostring وأيضًا المساواة (). إنه يعمل فقط إذا كنت ترمز للقيم. مثال:

<s:if test="#currentLongValue == 1234">

أي أدلة؟

شكرًا لك.

هل كانت مفيدة؟

المحلول

يجب إجراء مقارنات السلسلة باستخدام equals() ليس ==

عمل:

public Long getSomeLongValue () {
    Long l = 55l;
    return l;
}

public String getSomeString () {
    return "55";
}

JSP:

<s:if test="someLongValue.toString().equals(someString)">
    CAME IN IF
</s:if>
<s:else>
    CAME IN SIDE ELSE
</s:else>

نصائح أخرى

ماذا عن تجربة الاتجاه المعاكس؟

<s:if test="#currentLongValue == Long.parseLong(#stringValue)" >

ملاحظة جانبية: لم أستخدم STRUCTS2 مباشرةً ولكني عملت مع Grails .. ألا ينبغي أن تضمن الاختبار داخل الأقواس؟

<s:if test="%{#currentLongValue == Long.parseLong(#stringValue)}" >
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top