我创建了一个包含@Transactional注释的Aspect.我的建议正在按预期调用,但新实体AuditRecord永远不会保存到数据库中,看起来我的@Transactional注释不起作用.
@Aspect
@Order(100)
public class ServiceAuditTrail {
private AppService appService;
private FooRecordRepository fooRecordRepository;
@AfterReturning("execution(* *.app.services.*.*(..))")
public void logAuditTrail(JoinPoint jp){
Object[] signatureArgs = jp.getArgs();
String methodName = jp.getSignature().getName();
List<String> args = new ArrayList<String>();
for(Object arg : signatureArgs){
args.add(arg.toString());
}
createRecord(methodName, args);
}
@Transactional
private void createRecord(String methodName, List<String> args){
AuditRecord auditRecord = new AuditRecord();
auditRecord.setDate(new Date());
auditRecord.setAction(methodName);
auditRecord.setDetails(StringUtils.join(args, ";"));
auditRecord.setUser(appService.getUser());
fooRecordRepository.addAuditRecord(auditRecord);
}
public void setAppService(AppService appService) {
this.appService = appService;
}
public void setFooRecordRepository(FooRecordRepository fooRecordRepository) {
this.fooRecordRepository= fooRecordRepository;
}
}
Run Code Online (Sandbox Code Playgroud)
bean上下文如下: …
请不要标记为重复,其他类似的问题没有解决我的问题.
这是我的设置
/main.py
/actions/ListitAction.py
/actions/ViewAction.py
Run Code Online (Sandbox Code Playgroud)
Main.py:
from actions import ListitAction, ViewAction
Run Code Online (Sandbox Code Playgroud)
ListitAction.py:
class ListitAction(object):
def __init__(self):
#some init behavior
def build_uri():
return "test.uri"
Run Code Online (Sandbox Code Playgroud)
ViewAction.py
from actions import ListitAction
class ViewAction(ListitAction):
def __init__(self, view_id):
ListitAction.__init__(self)
self.view_id = view_id
def build_uri():
return "test"
Run Code Online (Sandbox Code Playgroud)
运行:
$ python3 main.py
Run Code Online (Sandbox Code Playgroud)
我收到的唯一错误消息是:
Traceback (most recent call last):
File "/home/jlevac/workspace/project/listit.py", line 11, in <module>
from actions import ListitAction, ViewAction, CommentsAction
File "/home/jlevac/workspace/project/actions/ViewAction.py", line 3, in <module>
class ViewAction(ListitAction):
TypeError: module.__init__() takes at most 2 arguments (3 given) …Run Code Online (Sandbox Code Playgroud) 我正以非常困难的时间以我需要的方式装饰Zend.这是我需要的HTML结构:
<table>
<thead><tr><th>one</th><th>two</th><th>three</th><th>four</th></thead>
<tbody>
<tr>
<td><input type='checkbox' id='something'/></td>
<td><img src='src'/></td>
<td><input type='text' id='something'/></td>
<td><input type='radio' group='justonegroup'/></td>
</tr>
<tr>
<td><input type='checkbox' id='something'/></td>
<td><img src='src'/></td>
<td><input type='text' id='something'/></td>
<td><input type='radio' group='justonegroup'/></td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
正文中的行数由我的表单类中的循环结构决定.当然,所有ID都是独一无二的.表单中的所有单选按钮属于一个组.我的问题是我不确定如何创建然后在我的表中设置Zend_Form_Element_MultiCheckbox和Zend_Form_Element_Radio对象的样式.在哪里/如何将相应的装饰器应用于复选框和单选按钮以具有如上所述的表单结构?
到目前为止我的Form类:
class Form_ManageAlbums extends Zend_Form
{
public function __construct($album_id)
{
$photos = Model_DbTable_Photos::getAlbumPhotos($album_id);
$selector = new Zend_Form_Element_MultiCheckbox('selector');
$radio = new Zend_Form_Element_Radio('group');
$options = array();
while($photo = $photos->fetchObject())
{
$options[$photo->id] = '';
$image = new Zend_Form_Element_Image('image'.$photo->id);
$image->setImageValue('/dog/upload/'.$photo->uid.'/photo/'.$photo->src);
$caption = new Zend_Form_Element_Text('caption'.$photo->id);
$caption->setValue($photo->caption);
$this->addElements(array($image, $caption));
}
$selector->addMultiOptions($options);
$radio->addMultiOptions($options);
$this->addElement($selector); …Run Code Online (Sandbox Code Playgroud)