Это релевантная часть моего кода (я пытаюсь добавить компонент расписания на портал моей школы):
<h:panelGroup layout="block" id="sc-timetable-slots" styleClass="traverse ui-helper-clearfix">
<h:form id="sc-timetable-slots-table" styleClass="sc-left-bulk ui-widget-content">
<div class="sc-8-column">
<h:panelGroup layout="block" styleClass="sc-hours">
<ul>
<li class="ui-widget-header"><h:outputText value="H" /></li>
<c:forEach begin="4" end="24" var="h">
<li>#{h}:00</li>
</c:forEach>
</ul>
</h:panelGroup>
</div>
<ui:repeat value="#{timetableSlot.dow}" var="dow" varStatus="ix">
<div class="sc-8-column">
<h:panelGroup layout="block" styleClass="sc-timetable-slots">
<ul>
<li class="ui-widget-header"><h:outputText value="#{msg[dow]}"/></li>
<ui:repeat value="#{timetableSlot.getSlots(login.person,ix.index)}" var="slot">
<li class="sc-timetable-item">
<h:commandLink action="#{timetableSlot.edit(slot)}" value="#{slot.timeStart} : #{slot.timeEnd}" styleClass="sc-button incomplete">
<f:ajax render=":sc-timetable-slots" onevent="reRender"/>
</h:commandLink>
</li>
</ui:repeat>
<li>
<h:commandLink action="#{timetableSlot.edit(login.person,ix.index)}" value="#{msg['timetable.slots.new']}" styleClass="sc-button incomplete">
<f:ajax render=":sc-timetable-slots" onevent="reRender"/>
</h:commandLink>
</li>
</ul>
</h:panelGroup>
</div>
</ui:repeat>
</h:form>
<h:form id="sc-timetable-slots-edit" styleClass="sc-right-detail ui-widget-content" rendered="#{not empty timetableSlot.edited}">
<span class="traverse ui-widget-header">#{msg['timetable.slots.edit']}</span>
<h:panelGrid styleClass="traverse" columns="2">
<h:outputLabel for="timeStart" value="#{msg['timetable.slots.start']}"/>
<h:inputText id="timeStart" value="#{timetableSlot.edited.timeStart}"/>
<h:outputLabel for="timeEnd" value="#{msg['timetable.slots.end']}"/>
<h:inputText id="timeEnd" value="#{timetableSlot.edited.timeEnd}"/>
<h:commandButton type="submit" styleClass="sc-button incomplete" action="#{timetableSlot.save}" value="#{msg['nav.save']}">
<f:ajax render=":sc-timetable-slots" onevent="reRender"/>
</h:commandButton>
</h:panelGrid>
</h:form>
</h:panelGroup>
Командные ссылки работают нормально, а команда «сохранить» commandButton - нет.Это не «визуализированный» атрибут, я пробовал без него, тоже самое.Дело в том, что он вообще не срабатывает, XHR не генерируется, кнопка не работает.Я пробовал разные комбинации, даже установив для атрибута render значение @all.Еще ничего.В прошлый раз, когда я спрашивал о чем-то, касающемся commandButton и ajax, я спешил, так что в конце концов я обошел это, но на этот раз я хотел бы докопаться до сути.: D