Struts 2 "<en:wenn> - tag" funktioniert nicht wie erwartet
Folgenden ist ein code-snippet aus meinem jsp, die mit einem Streben "if" - tag.
<s:if test="(isVetRequired.equals(true) && isVetValidationRequired())">
<div id="validateVetDiv">
<table width="100%" border="0" cellspacing="1">
<tr style="vertical-align: top;">
<td width="30%"><s:text name="label.vet.certificate" />: <span class="req_field">*</span></td>
<td width="35%">
<!-- <s:select
cssClass="txt290"
list="#{'CleanCo Lanka (Pvt) Ltd':'CleanCo Lanka (Pvt) Ltd', 'Laugfs Eco Sri (Pvt)':'Laugfs Eco Sri (Pvt)', 'Drive Green (Pvt) Ltd':'Drive Green (Pvt) Ltd'}"
name="vetCompany" id="vetCompany" headerKey="-1"
headerValue="%{getText('select.vet.company')}" /> -->
<s:select
cssStyle="width: 95%;"
list="vetCompanyList" listKey="name" listValue="name"
name="vetCompany" id="vetCompany" headerKey="-1"
headerValue="%{getText('select.vet.company')}" />
</td>
<td width="35%">
<div align="left"><s:submit name="butValidateVet"
action="validateVet" id="butValidateVet"
value="%{getText('label.validate')}" /><span class="style3"
id="vetCert"><label> <s:if
test="vetValidityStatus == null"> </s:if><s:elseif
test="vetValidityStatus == @lk.icta.erl.action.RevenueLicenseIssuanceServiceAction@VALIDATION_STATUS_VALID">
<label class="label_valid_certificate"><strong><s:property
value="getText('message.valid.status')" /></strong></label>
</s:elseif> <s:elseif
test="vetValidityStatus == @lk.icta.erl.action.RevenueLicenseIssuanceServiceAction@VALIDATION_STATUS_INVALID">
<label class="label_invalid_certificate"><strong><s:property
value="getText('message.invalid.status')" /></strong></label>
</s:elseif></label></span></div>
</td>
</tr>
<tr> </tr>
</table>
</div>
</s:if>
isVetValidationRequired() ist in der action-Klasse. Die Umsetzung dieser Methode ist unten dargestellt.
public boolean isVetValidationRequired(){
boolean isVetRequired = true;
Fuel fuel = ((Vehicle) getSession().get(
SessionConstants.SESSION_VEHICLE)).getFuel();
fuelId = fuel.getFuelId();
if (fuelId == 4 || fuelId == 5) {
isVetRequired = false;
}
return isVetRequired;
}
Das Problem ist, dass die Bedingung bei if-tag immer zu false ausgewertet wird und die Tabelle wird nicht angezeigt. Ich ausgetestet das system und fand heraus, dass der Rückgabewert der Methode ist true. Immer noch die Tabelle nicht zeigen, bis. Was kann der Grund dafür sein?
Vielen Dank im Voraus.
- isVetRequired.equals(boolean) wird nicht erwähnt?
- isVetRequired.equals(boolean) true ist. isVetRequired Feld in der action-Klasse zugeordnet ist wahr.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dadurch wird nach
public boolean isVetRequired;
oderpublic boolean isVetRequired() { return isVetRequired; }
.Da die variable private, wie in
müssen Sie extrahieren Sie die variable aus der Methode, und deklarieren Sie es als
private
in der Klasse, dann fügen Sie die Get-Methode.Und schließlich
is/get/set
werden automatisch verarbeitet, die das framework verwenden, soÜbrigens dein code ist seltsam... da sind Sie wieder, vetValidationRequired nur basierend auf vetRequired Wert, Sie sollten es ändern, um so etwas wie dieses:
und die Prüfung wie folgt:
Stellen Sie bitte Ihre Boolesche variable anders ist es getter-Methode.
Machen es
private boolean vetRequired;
entfernenis
von Variablen-Namen, wie Sie in Konflikt mit Ihren getter-Methode.Nun sollte es funktionieren. Für mehr können Sie Folgen mir.