Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 控制器和wicket页面的设计模式帮助_Java_Spring_Wicket - Fatal编程技术网

Java 控制器和wicket页面的设计模式帮助

Java 控制器和wicket页面的设计模式帮助,java,spring,wicket,Java,Spring,Wicket,我有一个wicket页面,可以发布交易。它接受净值并计算佣金和税金。控制器类用于在更改一个值时更新其他值。我已经让它工作,但我觉得设计是不是最好的关于控制器,因为它有不同的更新方法,如果它是一个毛或净额交易的基础上 我的第一个想法是拥有一个nettController和一个grossController,这两个控制器都继承自controller,并使用工厂选择正确的控制器。由于使用@SpringBean,我在使用wicket时遇到了问题 公共类postenderWriterTransactio

我有一个wicket页面,可以发布交易。它接受净值并计算佣金和税金。控制器类用于在更改一个值时更新其他值。我已经让它工作,但我觉得设计是不是最好的关于控制器,因为它有不同的更新方法,如果它是一个毛或净额交易的基础上

我的第一个想法是拥有一个nettController和一个grossController,这两个控制器都继承自controller,并使用工厂选择正确的控制器。由于使用@SpringBean,我在使用wicket时遇到了问题


公共类postenderWriterTransactionPanel扩展了AbstractPolicyCurrentAdhocTransactionPanel{
@春豆
公共姿势书写器TransactionPanel控制器;
@凌驾
受保护的void onInitialize(){
super.onInitialize();
添加(grossAmountQuestion=createNettAmountTextField(总金额\ ID,总金额\关键字));
添加(nettAmountQuestion=createNettAmountTextField(净额金额ID,净额金额键));
添加(nettAmountIncTax=createCurrencyTextField(NETT_INC_TAX_ID,NETT_incu TAX_KEY));
添加(CommissionMount=createCurrencyTextField(佣金金额ID,佣金金额密钥));
添加(佣金率=createPercentageTextField(佣金率ID,佣金率关键字));
添加(taxAmount=createCurrencyTextField(TAX\u AMOUNT\u ID,TAX\u AMOUNT\u KEY));
添加(taxRate=createPercentageTextField(TAX_RATE_ID,TAX_RATE_KEY));
添加(totalAmount=createInfoPanel(TOTAL\u AMOUNT\u ID,TOTAL\u AMOUNT\u KEY));
checkOverride(佣金金额、佣金率、OVERRIDE_insurance_COMMISSION.getCode());
检查覆盖(taxAmount、taxRate、OVERRIDE_TAX.getCode());
增加(内容);
addEffectiveDateOnUpdate();
getModelObject().getTransactionPosting().setAmount(0L);
controller.setParameterValues(getModelObject());
如果(getModelObject().isNetRated()){
grossAmountQuestion.setVisible(false);
}否则{
nettAmountQuestion.setVisible(false);
nettAmountIncTax.setVisible(false);
}
}
公共无效检查覆盖(文本字段金额、文本字段费率、字符串代码){
如果(!controller.getOverrideAllowed(代码,getPscm())){
amount.setEnabled(false);
rate.setEnabled(false);
}
}
私有void重绘值(AjaxRequestTarget目标){
如果(getModelObject().isNetRated()){
添加(净金额问题、净金额税、佣金金额、佣金率、税额、税率、总金额、新保单余额);
}
否则{
添加(grossAmountQuestion、CommissionMount、commissionRate、taxAmount、taxRate、totalAmount、newPolicyBalance);
}
}
私有void callControllerUpdate(字符串类型){
如果(getModelObject().isNetRated()){
开关(类型){
案例净金额(ID):
controller.updateNeteTamount(getModelObject());
打破
案例净值公司税务识别号:
controller.updateNettIncTax(getModelObject());
打破
案件佣金金额编号:
controller.updateCommissionAmount(getModelObject());
打破
案件佣金率_ID:
controller.updateCommissionRate(getModelObject());
打破
案例税金额识别码:
controller.updateTaxAmount(getModelObject());
打破
案例税率\u ID:
controller.updateTaxRateFromTextBox(getModelObject());
打破
}
}否则{
开关(类型){
案例总金额\u ID:
controller.updateGrossAmount(getModelObject());
打破
案件佣金金额编号:
controller.updateGrossCommissionMount(getModelObject());
打破
案件佣金率_ID:
controller.updateGrossCommissionRate(getModelObject());
打破
案例税金额识别码:
controller.updateGrossTaxAmount(getModelObject());
打破
案例税率\u ID:
controller.updateGrossTaxRate(getModelObject());
打破
}
}
}
}
@组成部分
公共类postenderWriterTransactionPanelController扩展了AdhocTransactionViewControllerImpl{
@自动连线
专用净费率计算器;
public void updateNettAmount(postenderWriterTransactionContext){
context.setNettAmountIncTax(nettRatedCalculator.calculateNettIncTax(context.getNettAmount(),context.getParameterTaxRate());
context.setCommissionMount(nettRatedCalculator.calculateCommissionAmount(context.getCommissionFlatCharge(),context.getNettAmount(),context.getParameterCommissionRate());
context.setCommissionRate(nettRatedCalculator.calculateCommissionRate(context.getCommissionMount(),context.getNettAmount());
context.setTaxRate(context.getParameterTaxRate());
context.setTaxAmount(nettRatedCalculator.calculateTaxAmount(context.getParameterTaxRate(),context.getNetTaxAmount(),context.getCommissionAmount());
context.setTotalAmount(nettRatedCalculator.calculateTotalAmount(context.getNettAmount(),context.getCommissionAmount(),context.getTaxAmount());
}
public void updateCommissionAmount(PostanderWriterTransactionContext上下文){
context.setCommissionRate(nettRatedCalculator.calculateCommissionRate)(context.getCommissionMount(),cont