The best solution for me is to use the default <button>
tag instead. Since typical button styling is not being applied (in my case I am using Primefaces), I set it manually. Here’s the whole result:
<h:outputStylesheet library="primefaces" name="jquery/ui/jquery-ui.css" /> <h:outputStylesheet library="css" name="login.css" /> <div class="message"> <c:if test="#{param.error == 1 and SPRING_SECURITY_LAST_EXCEPTION != null}"> <span class="error">#{SPRING_SECURITY_LAST_EXCEPTION.message}</span> </c:if> </div> <div class="login"> <form action="../j_spring_security_check" method="post"> <h:panelGrid columns="2"> <h:outputText value="Username" /> <h:inputText id="j_username" /> <h:outputText value="Password" /> <h:inputSecret id="j_password" /> </h:panelGrid> <div class="submit"> <button type="submit" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"> <span class="ui-button-text">Login</span> </button> </div> </form> </div>