0

我对 JSTL 很陌生,所以需要你的帮助。

我有一个名为“specialties”的字符串,我正在检查一个特定的字符串是否存在,如果存在,我检查标记对应的输入,然后用空字符串替换它。

<input type="checkbox" name="specialities" value="OB/Gyn" 
<c:if test="${fn:containsIgnoreCase(asc_details.specialities, 'OB/Gyn')}">
<c:set var="specialities" value="${fn:replace(specialities,'OB/Gyn','')}"></c:set>
<c:out value="${'checked'}"/></c:if>
/>&nbsp;OB/Gyn

<input type="checkbox" name="specialities" value="Plastic/reconstructive"
<c:if test="${fn:containsIgnoreCase(specialities, 'Plastic/reconstructive')}">
<c:set var="specialities" value="${fn:replace(specialities,'Plastic/reconstructive','')}"></c:set>
<c:out value="${'checked'}"/></c:if>
/>&nbsp;Plastic/reconstructive

它适用于第一个匹配字符串“OB/Gyn”并将其替换为空字符串,但不会将“Plastic/reconstructive”替换为空字符串。我无法弄清楚为什么会这样。请帮忙。

4

1 回答 1

1

这里可能存在区分大小写的错误。该containsIgnoreCase()测试不区分大小写,因此它会通过例如“plastic”、“Plastic”、“PlAsTiC”和“PLASTIC”,但是replace()它区分大小写,它只会替换“Plastic”。

它对您来说失败很可能意味着该值与案例不完全匹配。也许它实际上是“塑料/重建”左右?

您基本上需要修复大小写(并替换containsIgnoreCase()by contains()),或者执行不区分大小写的替换,但是这样的功能在JSTL中不可用。你很可能需要自己种一个。

于 2012-10-05T10:46:43.983 回答