i have a navigation with h:commandLinks to set a backing bean und reload parts of the view via ajax. that works as expected but it produces horrible mark up because h:commandLinks have to be in a form element.
the view is as follows:
<h:body>
<nav>
    <h:form id="navigation">
        <h:commandLink
                styleClass="#{fragmentsPresenter.isActive('fragment-one.xhtml') ? 'active' : 'inactive'}"
                action="#{fragmentsPresenter.setActiveView('fragment-one.xhtml')}">
            viewOne
            <f:ajax execute="@this" render="fragment-container navigation" />
        </h:commandLink>
        <h:commandLink
                styleClass="#{fragmentsPresenter.isActive('fragment-two.xhtml') ? 'active' : 'inactive'}"
                action="#{fragmentsPresenter.setActiveView('fragment-two.xhtml')}">
            viewTwo
            <f:ajax execute="@this" render="fragment-container navigation" />
        </h:commandLink>
    </h:form>
</nav>
<h:panelGroup layout="block" id="fragment-container">
    <ui:fragment>
        <ui:include src="#{fragmentsPresenter.activeView}"/>
    </ui:fragment>
</h:panelGroup>
</h:body>
is it possible to achieve the same functionality with other jsf elements that dont require a form?
thanks in advance.