Нет. Это совершенно неправильно. Конечно, вы можете иметь много параметров в методах шва. Это просто Java. Этот код в порядке:
@Stateless
public class BusinessObjectImpl implements BusinessObject {
public void doSomething(SomeObject i01, SomeObject i02) {
}
}
Конечно, Seam позволяет вам вводить любые другие классы, которые вы можете найти полезными. Может быть так:
@Stateless
public class BusinessObjectImpl implements BusinessObject {
@In
private AnotherObject anotherObject;
public void doSomething(SomeObject i01, SomeObject i02) {
anotherObject.someMethod(i01, i02);
}
}
РЕДАКТИРОВАТЬ (на основе комментария):
Существуют способы передачи нескольких параметров со страницы с использованием JBoss EL (который учитывает объекты в качестве параметров). Например
<h:form>
<h:commandButton action="#{firstBean.performAction(secondBean, thirdBean)}">Go</h:commandButton>
</h:form>
Где ваши SecondBean
и ThirdBean
уже заполнены в вашем сеансе / разговоре (с соответствующими @Name
), а ваш FirstBean
будет выглядеть примерно так:
@Name("firstBean")
@Stateless
public class FirstBean {
public void performAction(SecondBean secondBean, ThirdBean thirdBean) {
//stuff
}
}
Но этот подход не совсем элегантен, так как он основан на SecondBean и ThirdBean, находящихся в вашей текущей сессии / разговоре. Возможно, вам лучше придерживаться подхода, связанного с контроллером страницы или компонентом Backing Bean. Это может быть POJO, который затем вызывает ваш SLSB. Например:
<h:form>
<h:commandButton action="#{backingBean.performAction}">Go</h:commandButton>
</h:form>
И бэк:
@Name("backingBean")
@Scope(ScopeType.CONVERSATION)
public class BackingBean {
@In
private FirstBean firstBean;
@In
private SecondBean secondBean;
@In
private ThirdBean thirdBean;
public void performAction() {
firstBean.performAction(secondBean, thirdBean);
}
}
Что очень похоже на ваш первоначальный вопрос; -)