In tapestry, the "t:type" attribute refers to the component type, and not the "type" attribute that is rendered in the HTML. One of Tapestry's principles is static structure, dynamic behaviour so the "t:type" can not be a runtime value (http://tapestry.apache.org/principles.html)
Tapestry has separate components for each input type (text, checkbox, submit etc). To pick an input type at runtime you will most likely have a "block" in your template for each type and use the delegate component to render one based on some runtime logic. http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Delegate.html