Liferay 设置默认portlet首选项
我正在尝试设置portlet首选项,而不涉及portlet.xml 这是我的portlet:Liferay 设置默认portlet首选项,liferay,portlet,Liferay,Portlet,我正在尝试设置portlet首选项,而不涉及portlet.xml 这是我的portlet: -myportletclass -myportletjsp -myconclass -myconfjsp 当我单击preferences时,我可以看到confjsp,它显示了我的首选项的表单。当我提交它时,将首选项设置为表单中的值 但是如果不修改portlet.xml,我没有任何默认值 我应该添加什么,在哪里添加 我看到一些人在config类的呈现中这样做,但它并没有按照他们的方式工作 问候。 多谢各
-myportletclass
-myportletjsp
-myconclass
-myconfjsp
当我单击preferences时,我可以看到confjsp,它显示了我的首选项的表单。当我提交它时,将首选项设置为表单中的值
但是如果不修改portlet.xml,我没有任何默认值
我应该添加什么,在哪里添加
我看到一些人在config类的呈现中这样做,但它并没有按照他们的方式工作
问候。
多谢各位
编辑:我设置首选项的方式:
首先,我有一个简单的表单我的confjsp,基本的,不需要添加它;
然后,我有一个控制器:
@Controller
@RequestMapping("EDIT")
public class ConfigurationController {
@ModelAttribute("validatePref")
public ValidatePrefForm getValidatePrefForm() {
ValidatePrefForm form = new ValidatePrefForm();
return form;
}
@ActionMapping(params = "action=validatePref")
public void processAction(@ModelAttribute("validatePref") ValidatePrefForm form,
PortletPreferences portletPreferences, ActionResponse response)
throws Exception {
String mylink = form.getMylink();
if (null != mylink && !mylink .equals("")) {
portletPreferences.setValue("mylink ", mylink );
}
portletPreferences.store();
}
@RenderMapping
public String render() throws Exception {
return "myportletjsp.jsp";
}
}
然后,在我的portlet中,我有以下内容来获取值:
mylink= preferences.getValue("mylink", mylink);
if(null==mylink){
mylink= mydefaultUrl;
}
然后我可以首先使用mylink:portlet.xml是一个拥有默认portlet首选项的好地方
如果出于某种原因,您绝对不希望这样做,那么您当然可以检查首选项是否为
null
,然后假设您的默认值。只要在操作、呈现、事件或资源阶段检索portlet首选项,就可以执行此操作。但在第二种方式中,当我添加新的portlet实例时,它会保留我为页面中已存在的portlet设置的首选项。如何修复它:当我在页面中有portlet时,使用默认值。非常感谢。编辑:如果可能的话,我更喜欢不使用portlet.xml的方式,但我不排除它。@Jean:您如何设置您的首选项?因为我认为portlet首选项是为添加到页面的每个portlet实例设置的,而不是为整个portlet或用户设置的。Liferay还为首选项设置了默认值,您可以检查init.jsp
(如果您有源代码)以查找Liferay的内置portlet。如果您不确定,请不要担心它与portlet.xml一起工作,以防万一。感谢@Olaf这帮助解决了我遇到的一个问题