?index_of

?index_of

There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence.
The blog content is all parallel goods. Those who are worried about being cheated should leave quickly.

index_of (substring,start )在字符串中查找某个子串,返回找到子串的第一个字符的索引,如果没有找到子串,则返回-1 。${"string"?index_of("in")}结果为3

你提出的需求是:当公司代码(`companyCode`)为 `"SX04"` 时,复选框应**显示为未选中、置灰且不可编辑(禁用)**;而对于其他特定代码(如 `SX01`, `SX06`, `DL01`, `SX08`, `SX09`),则保持“选中并可编辑”或根据逻辑处理。 但当前的 FreeMarker 模板代码存在问题: - 使用了 `?index_of('${company.companyCode?if_exists}')`,这在 FreeMarker 中语法错误。 - 无法正确判断字符串是否在某个列表中。 - 没有对 `SX04` 特殊处理(禁用并置灰)。 --- ### ✅ 正确实现方式(FreeMarker + HTML) ```html <input type="checkbox" id="${company.companyCode?if_exists}_podkz_check" value="X" <#if company.companyCode?if_exists == "SX04"> disabled readonly <#else> <#if ["SX01", "SX04", "SX06", "DL01", "SX08", "SX09"]?seq_contains(company.companyCode?if_exists)> checked="checked" </#if> </#if> onChange="checkPodkz('${company.companyCode?if_exists}')" > <input type="hidden" class="form-control form-control-sm" id="${company.companyCode?if_exists}_podkz" name="customerNewDetailList.podkz" <#if company.companyCode?if_exists == "SX04"> value="" <#else> <#if ["SX01", "SX04", "SX06", "DL01", "SX08", "SX09"]?seq_contains(company.companyCode?if_exists)> value="X" <#else> value="" </#if> </#if> > ``` --- ### 🔍 代码解释 1. **复选框部分 (`<input type="checkbox">`)** - 如果 `companyCode` 是 `"SX04"`: - 添加 `disabled readonly` 属性 → 置灰且不可点击。 - 不添加 `checked`,即默认不选中(可根据需求改为 `checked` 但仍是灰色)。 - 否则: - 判断是否在允许的列表中(使用 `?seq_contains`),如果在则 `checked="checked"`。 - `onChange` 事件仅在可编辑时生效(`SX04` 被禁用后不会触发)。 2. **隐藏输入框 (`<input type="hidden">`)** - 对于 `SX04`,强制 `value=""`(空值),表示不提交有效数据。 - 其他情况按规则赋值:若在白名单中则为 `"X"`,否则为空。 3. **FreeMarker 语法说明** - `${company.companyCode?if_exists}`:安全取值,避免 null 错误。 - `["SX01", ...]?seq_contains(...)`:正确的方式判断元素是否在列表中。 - 避免使用错误的 `?index_of('string')`,因为那是 Java 字符串方法,在 FTl 中不能这样用。 --- ### 💡 补充建议(前端样式增强) 为了让“置灰”更明显,可以加一点 CSS: ```css input:disabled + input[type=hidden] { background-color: #f0f0f0; color: #888; } ``` 或者通过 JS 动态控制一致性。 --- ### ❓ 注意事项 - 若业务要求 `SX04` 虽然显示勾选但不可改,可加上 `checked="checked"` 并保留 `disabled`。 - 如果你想让 `SX04` 的 hidden field 提交 `"X"`(只是不能改),可以把 hidden 的 value 改为: ```ftl <#if ["SX01", "SX06", "DL01", "SX08", "SX09"]?seq_contains(company.companyCode?if_exists) || company.companyCode?if_exists == "SX04"> value="X" <#else> value="" </#if> ``` 这样 `SX04` 固定提交 X,但用户不能修改。 --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值