我对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>
/> 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>
/> Plastic/reconstructive
它适用于第一个匹配的字符串“OB / Gyn”,并用空字符串替换它,但它不会用空字符串替换“Plastic / reconstructive”。我无法弄清楚为什么会这样。请帮忙。
答案 0 :(得分:1)
这里可能存在区分大小写错误。 containsIgnoreCase()
测试不区分大小写,因此它将通过例如“plastic”,“Plastic”,“PlAsTiC”和“PLASTIC”,但replace()
区分大小写并且它将仅替换“Plastic” ”
它失败了你很可能意味着价值与案件不完全一致。也许实际上“塑料/重建”左右?
您基本上需要修复外壳(并将containsIgnoreCase()
替换为contains()
),或执行不区分大小写的替换,但JSTL中不提供此功能。你很可能需要一个人养一个。