Различие между [self MethodName] и [self performSelector: @ selector (Method Name)]

В чем разница между вызовом методов со следующими типами

1.

[self methodName];

и

2.

[self performSelector:@selector(methodName)];   // no afterDelay is used

Это как performSelector будет использовать другой поток для работы??

-121--1251171- Почему f: validateDouureRange работает только для @ SessionScoped? Может ли кто-то объяснить мне, почему Foo в моем примере всегда имеет значение null, когда он попадает в класс validateDouureRRRange? Конечным результатом является минимальное значение для средства проверки, всегда равное 0. Номер 3 отображается просто...

Может ли кто-то объяснить мне, почему Foo в моем примере всегда имеет значение null, когда он попадает в класс validateDouureRange? Конечным результатом является минимальное значение для средства проверки, всегда равное 0. Число 3 прекрасно дисплеи на странице в элементе outputText. Это хорошо, если я делаю компонент @ SessionScoped вместо @ ViewScoped

Контроллер:

import java.io.Serializable;
import java.math.BigDecimal;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ViewScoped
@ManagedBean(name = "fooController")
public class FooController implements Serializable {

    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(FooController.class);
    private static final long serialVersionUID = 1L;
    private Foo foo;
    private BigDecimal amount;
    private Long fooId;

    public Long getFooId() {
        return fooId;
    }

    public void setFooId(Long fooId) {
        this.fooId = fooId;
        this.foo = new Foo();
        foo.setFooId(fooId);
        foo.setMinAmount(Double.valueOf(3));
        foo.setMaxAmount(Double.valueOf(10));
    }

    public Foo getFoo() {
        return foo;
    }

    public void sendAmount() {
        log.debug("sendAmount: " + amount);
    }

    public BigDecimal getAmount() {
        return amount;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }

    public static class Foo {

        private Long fooId;
        private Double minAmount;
        private Double maxAmount;

        public Foo() {
        }

        public void setFooId(Long fooId) {
            this.fooId = fooId;
        }

        public void setMinAmount(Double minAmount) {
            this.minAmount = minAmount;
        }

        public void setMaxAmount(Double maxAmount) {
            this.maxAmount = maxAmount;
        }

        public Long getFooId() {
            return fooId;
        }

        public Double getMaxAmount() {
            return maxAmount;
        }

        public Double getMinAmount() {
            return minAmount;
        }
    }
}

JSP:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
            xmlns:ui="http://java.sun.com/jsf/facelets"
            xmlns:f="http://java.sun.com/jsf/core"
            xmlns:h="http://java.sun.com/jsf/html"
            >
<f:metadata>
    <f:viewParam name="fooId" value="#{fooController.fooId}" />        
</f:metadata>
<h:form id="myForm">
    <h:outputText value="This is correctly displayed: '#{fooController.foo.minAmount}'"/><br/>
    <h:outputText value="My Input:" />
    <h:inputText id="myInput"
                 value="#{fooController.amount}" 
                 required="true"
                 >
        <f:convertNumber maxFractionDigits="2"/>
        <f:validateDoubleRange minimum="#{fooController.foo.minAmount}" maximum="80"/>
    </h:inputText>
    <h:message for="myInput"/>
    <br/>
    <h:commandButton id="myButton"
                     value="Save Amount"
                     action="#{fooController.sendAmount}"
                     >
    </h:commandButton>
</h:form>
</ui:composition>

Я использую JSF 2 на JBoss 6,1

Если вы находитесь там @ BalusC, это самый простой пример, который я могу прийти

-- изменить, я должен добавить, что fooId устанавливается с помощью параметра просмотра, так что вам нужно? foId = 3 в конце вашего URL.

11
задан Simon 16 September 2011 в 14:55
поделиться