CSS 使用 <ui:repeat> ajax 更新后无法正确呈现
CSS not rendering correctly after ajax update using <ui:repeat>
这个有点复杂。基本上,我使用 Material Design Lite css by google 并触发 ajax 请求以使用 primefaces 动态添加输入字段。
<h:commandLink value="+ Add something>
<f:ajax listener="#{bean.method()}"
execute="@form"
process="@form"
render="@form" />
</h:commandLink>
通过向我的 bean 中的列表添加新条目,调用的方法在 ui:repeat 中添加了新的 div。
<h:form>
<ui:repeat value="#{bean.list}" var="v">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<h:inputText value="#{v.value}" id="valuetitle"/>
<label class="mdl-textfield__label" for="valuetitle">valuetitle</label>
</div>
</ui:repeat>
</h:form>
问题:CSS 没有正确更新。它不会启动我给 div 的 class。有人知道解决方案吗?
几个月前我遇到了同样的问题。发生这种情况是因为 MDL 在 HTML.
的渲染期间只应用了一次他们的样式
要修复它,您必须明确要求 MDL 重新渲染视图以重新应用样式。为此,您必须在 AJAX 请求的成功状态下调用以下 MDL 函数:
componentHandler.upgradeAllRegistered()
您的代码应如下所示:
<h:commandLink value="+ Add something>
<f:ajax listener="#{bean.method()}"
execute="@form"
process="@form"
render="@form"
onevent="function(data){if (data.status === 'success'){componentHandler.upgradeAllRegistered();}}"/>
</h:commandLink>
你以后可以更好地封装这个解决方案以获得更干净的方法,但现在这可以解决你的问题。
有关这种情况的更多信息,您可以查看 MDL GitHub 页面上的 this issue。
这个有点复杂。基本上,我使用 Material Design Lite css by google 并触发 ajax 请求以使用 primefaces 动态添加输入字段。
<h:commandLink value="+ Add something>
<f:ajax listener="#{bean.method()}"
execute="@form"
process="@form"
render="@form" />
</h:commandLink>
通过向我的 bean 中的列表添加新条目,调用的方法在 ui:repeat 中添加了新的 div。
<h:form>
<ui:repeat value="#{bean.list}" var="v">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<h:inputText value="#{v.value}" id="valuetitle"/>
<label class="mdl-textfield__label" for="valuetitle">valuetitle</label>
</div>
</ui:repeat>
</h:form>
问题:CSS 没有正确更新。它不会启动我给 div 的 class。有人知道解决方案吗?
几个月前我遇到了同样的问题。发生这种情况是因为 MDL 在 HTML.
的渲染期间只应用了一次他们的样式要修复它,您必须明确要求 MDL 重新渲染视图以重新应用样式。为此,您必须在 AJAX 请求的成功状态下调用以下 MDL 函数:
componentHandler.upgradeAllRegistered()
您的代码应如下所示:
<h:commandLink value="+ Add something>
<f:ajax listener="#{bean.method()}"
execute="@form"
process="@form"
render="@form"
onevent="function(data){if (data.status === 'success'){componentHandler.upgradeAllRegistered();}}"/>
</h:commandLink>
你以后可以更好地封装这个解决方案以获得更干净的方法,但现在这可以解决你的问题。
有关这种情况的更多信息,您可以查看 MDL GitHub 页面上的 this issue。