Look closer where it fails:
<h:outputText ... rendered="#{attr.orderItem.ItemId != null}">
<h:selectOneMenu ... rendered="#{attr.orderItem.ItemId == null}">
and where it works:
<h:outputText ... rendered="#{attr.orderItem.itemId != null}">
<h:inputText ... rendered="#{attr.orderItem.itemId == null}">
The one says ItemId
and the other says itemId
. Align it out. Properties always start with lowercase unless they start with 2 uppercased characters by themselves.