Hidden поле на форме Tapestry5
От: ASG2000  
Дата: 17.03.08 07:40
Оценка:
Как забиндить свойство бина на Hidden поле на форме Tapestry5.
Есть ActionType бин со свойством type. Проблема в том, что если в шаблоне
<input t:type="hidden" t:id="actiontype" t:value="actiontype.type"/>,
то ошибка "Unable to resolve component type 'hidden' to a component class name."
Есть ли вообще возмжность использовать hidden на форме, чтоб передать в бин значение, записанное с помошью
javascript на клиенте перед сабмитом?
Re: Hidden поле на форме Tapestry5
От: WFrag США  
Дата: 17.03.08 10:43
Оценка:
Здравствуйте, ASG2000, Вы писали:

ASG>Есть ли вообще возмжность использовать hidden на форме, чтоб передать в бин значение, записанное с помошью

ASG>javascript на клиенте перед сабмитом?

Сделать Hidden компонент. Что-то вроде:

public class Hidden extends AbstractField {
    @Parameter
    private String _value;
    
    @Inject
    private Request request;

    /**
     * @see org.apache.tapestry.corelib.base.AbstractTextField#writeFieldTag(org.apache.tapestry.MarkupWriter, java.lang.String)
     */
    @SuppressWarnings({"unchecked"})
    @BeginRender
    final void begin(MarkupWriter writer) {
        writer.element(
                "input",
                "type",
                "hidden",
                "id",
                getClientId(),
                "name",
                getElementName(),
                "value",
                _value);
        writer.end();
    }
    
    protected void processSubmission(String elementName) {
        _value = request.getParameter(elementName);
    }   
}
Re[2]: Hidden поле на форме Tapestry5
От: ASG2000  
Дата: 31.03.08 10:34
Оценка:
Здравствуйте, WFrag,

ASG>>Есть ли вообще возмжность использовать hidden на форме, чтоб передать в бин значение, записанное с помошью

ASG>>javascript на клиенте перед сабмитом?

Еще более лаконичный способ:

import org.apache.tapestry.MarkupWriter;
import org.apache.tapestry.corelib.base.AbstractTextField;


public final class Hidden extends AbstractTextField
{
@Override
protected final void writeFieldTag(MarkupWriter writer, String value)
{
writer.element(
"input",
"type",
"hidden",
"name",
getElementName(),
"id",
getClientId(),
"value",
value);
}

final void afterRender(MarkupWriter writer)
{
writer.end(); // input
}

}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.