Erro ao gerar componente dinamico

Pessoal mais uma vez pesso a ajuda de voces.

tenho um metodo que gera os meus input text atraves da quantidade digitada pela usuario, ate tranquilo ele esta fazendo isso de boa, o problema é quando eu digito um novo numero e ele manda uma nova requisição, neste momento me retorna um erro de ID duplicado, nao sei como eu resolvo isso.

segue o codigo:

	public void montaNivelProjeto(){
		HtmlOutputLabel label 		= null;
		HtmlInputText htmlInputText = null;
		
		label 			= new HtmlOutputLabel();
		htmlInputText 	= new HtmlInputText();

		try{
			
			//projeto = projetoBusiness.retonaProjetoNivel(projeto);
			int totalNivel = Integer.parseInt(projeto.getQtsnivel().trim());
			if(totalNivel != 0){
				
				for(int i = 1; i<totalNivel; i++){
					label = new HtmlOutputLabel();
					label.setStyle("font-weight:bold");
					label.setValue("Nivel "+i);
					htmlInputText = new HtmlInputText();
					htmlInputText.setId("nivel"+i);
					htmlInputText.setSize(50);
					//htmlInputText.setValue("");
					htmlInputText.setValueExpression("value", createValueExpression("#{projetoController.arr[" + (arr.size()) + "]}", String.class)); 
					arr.add("");
					this.getHtmlPanelGrid().getChildren().add(label);  
					this.getHtmlPanelGrid().getChildren().add(htmlInputText);
					
				}
			}

		}catch(Exception e){
			e.getMessage();
		}
	}

obrigado pessoal!!
abç!!

UP

Cara eu posso estar enganado mas quando você chama esse método, você está recriando todos os objetos a partir do nivel1(nivel+i), tenta colocar no lugar do i o arr.size().