我不知道是否可能,但我想要像
这样的东西<f:view>
<h:form>
<div>
<label for="accountId">Type your account id</label>
<input type="text" name="accountId"/>
</div>
<div>
<label for="amount">Type amount</label>
<input type="text" name="amount"/>
</div>
<div>
<!--NOTICE IT IS #{accountService.deposit} -->
<!--BUT I WANT TO USE #{accountService.deposit(accountId, amount)} -->
<h:commandButton action="#{accountService.deposit}" value="Deposit amount"/>
</div>
</h:form>
</f:view>
我的服务
@Stateless
@Name("accountService")
public class AccountServiceImpl implements AccountService {
@RequestParemeter
protected Integer accountId;
@RequestParemeter
protected double amount;
@PersistenceContext
private EntityManager manager;
public void deposit() {
Account account = manager.find(Account.class, accountId);
account.deposit(amount);
}
}
我想使用这个而不是上面显示的
@Stateless
@Name("accountService")
public class AccountServiceImpl implements AccountService {
@PersistenceContext
private EntityManager manager;
public void deposit(Integer accountId, double amount) {
Account account = manager.find(Account.class, accountId);
account.deposit(amount);
}
}
有可能吗?如果是这样,我应该使用什么 - 事件或其他什么 - 来实现我的目标?
的问候,
答案 0 :(得分:2)
有可能,
为了实现我的目标,我需要使用以下
<f:view>
<h:form>
<div>
<label for="accountId">Type your account id</label>
<input type="text" name="accountId"/>
</div>
<div>
<label for="amount">Type amount</label>
<input type="text" name="amount"/>
</div>
<div>
<h:commandButton action="#{accountService.deposit(param.accountId, param.amount)}" value="Deposit amount"/>
</div>
</h:form>
</f:view>
调用action方法时会评估param.accountId和param.amount 。虽然Seam允许在EL表达式中使用内置的事件上下文组件,如下所示
<h:commandButton action="#{accountService.deposit(eventContext.accountId, eventContext.amount)}" value="Deposit amount"/>
它没有按预期工作。也许是因为它在使用组件时才起作用,而不是在使用请求参数时。如果要传递请求参数,请使用 param
的问候,