I can't seem to reproduce your problem here with JSF 1.2_10 at Tomcat 6.0.18. I may not have understood your problem, or you're using a different JSF impl/version and/or appserver impl/version which may behave differently.
Here's the code I used to test it:
JSF
<h:form>
<h:inputText id="input1" value="#{myBean.input1}" required="true" />
<h:message for="input1" />
<h:inputText id="input2" value="#{myBean.input2}">
<f:convertNumber integerOnly="true" />
</h:inputText>
<h:message for="input2" />
<h:commandButton value="submit" action="#{myBean.submit}" />
</h:form>
MyBean (request scoped)
private String input1; // +getter +setter
private Integer input2; // +getter +setter
public void submit() {
System.out.println("submitted input1: " + input1);
System.out.println("submitted input2: " + input2);
}
There are 6 different test cases possible:
1) Leave both fields empty and hit submit button.
A 'required' error for input1 is displayed. Both fields are still empty. Submit method is not invoked.
2) Enter input1 and leave input2 empty and hit button.
The submit method is invoked and prints entered value of input1 and null for input2. The input1 value is still displayed and input2 is still empty.
3) Leave input1 empty and enter input2 with valid number and hit button.
A 'required' error for input1 is displayed. The input1 value is still empty. The input2 value is still displayed. Submit method is not invoked.
4) Leave input1 empty and enter input2 with invalid number and hit button.
A 'required' error for input1 is displayed. A 'not a number' error for input2 is displayed. The input1 value is still empty. The input2 value is still displayed. Submit method is not invoked.
5) Enter input1 and enter input2 with valid number and hit button.
The submit method is invoked and prints entered value of both input1 and input2. The both field values are still displayed.
6) Enter input1 and enter input2 with invalid number and hit button.
A 'not a number' error for input2 is displayed. The input1 value is still displayed. The input2 value is still displayed. Submit method is not invoked.
Anything just went as expected.
By the way, the f:convertNumber is superfluous if the property is already a Number (e.g. Integer). Even after removing the f:convertNumber from input2, anything went exactly as described before.