JSF Adicionar um <h:commandButton> antes de um <p:inputText>

Ola
preciso criar um formulário com JSF 2 em que o botão fique em cima (canto superior direito) e o campo para informar texto fique abaixo
algo como:

<h:form>
       <h:commandButton value ="Salvar" action="#{classeMB.adicionaCampo}" />  
       <p:inputText value="#{classeMB.campo}"</p:inputText> 
</h:form>

O problema é que da erro

for servlet Faces Servlet threw exception: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 

já na compilação

Posta seu código e mais detalhes sobre o erro. Nunca vi um erro desse tipo associado a componentes JSF

Tem algum loop nesta página? Se tiver mostre o código.

Obrigado pela atenção

Assim o formulário tem o campo de texto após o botão, ai da o erro, gostaria se com ajax ou outra forma que possa deixar o botão “Salvar” no canto superior direito da tela e o campo de texto no meio da tela
o erro: usando <h: ao inves de <p:

Ele não leva o valor do campo de texto
o código ta assim:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition template="/WEB-INF/templates/template.xhtml"
 	xmlns="http://www.w3.org/1999/xhtml"
 	xmlns:h="http://java.sun.com/jsf/html"
 	xmlns:ui="http://java.sun.com/jsf/facelets"
 	xmlns:f="http://java.sun.com/jsf/core"
 	xmlns:p="http://primefaces.org/ui" >
 	
 	<ui:define name="pagina">                                                              <!-- Aqui a essa pagina entra o template.xhtml -->	
 		<h:outputStylesheet library="css" name="cadastro.css" />  		                            	
 			<h:panelGrid  width="100%"  styleClass="pgcadastro">
 				<h:form> 				
 					<h:panelGrid columns="2" width="100%" styleClass="pgcabecalho"  columnClasses="col1f, col2f" >
 						    Cadastro do local de publicação da notícia 
 						    <h:commandButton value ="Salvar" action="#{localPublicacaoMB.adicionaLp}"   styleClass="salvar"/>  <!-- O botao fica aqui -->	    
 		    		</h:panelGrid > 
 		    		<br/><br/> 		    		    
 		    		<p:inputText value="#{localPublicacaoMB.lp.local}" styleClass="txmdob">Local:</p:inputText>    <!-- O campo de texto aqui -->  					
 		    	</h:form>
 		    	<h:dataTable value="#{localPublicacaoMB.lps}" var="linha" rendered="#{not empty localPublicacaoMB.lps}">
 		    		<f:facet name="header">Lista de locais</f:facet>
 		    		<h:column>
 		    			<f:facet name="header">Locais</f:facet>#{linha.local}
 		    		</h:column> 		    		
 		    	</h:dataTable> 		
 			</h:panelGrid > 		          
 	</ui:define>      
</ui:composition>

o MBin assim:

@ManagedBean
@SessionScoped
public class LocalPublicacaoMB {
	
	private List<LocalPublicacao> lps = new ArrayList<LocalPublicacao>();
	private LocalPublicacao lp = new LocalPublicacao(); 
	
	
	public void adicionaLp(){
		this.lps.add(this.lp);
		this.lp = new LocalPublicacao(); 
		
	}
 //  GETS E SETS
}