1

私はJava開発者です。私は今、ジャックラビットv.1.6.4に直面しています。私の目標の 1 つは、Web ベースの jcr ブラウザーでノードを作成することです。そのため、必須プロパティを使用してノードを作成する必要がある場合は、もちろん例外制約違反がスローされます。

私の質問は、ランタイムの作成中に必須プロパティを取得する方法がありますか? たとえば、いくつかのデフォルト値を割り当てると、ノードを保存できます。

非常に良いことの 1 つは、PropDef フォーム NodeTypeDef のインスタンスを持つことですが、Node インターフェイスからは、私の場合は役に立たない PropertyDefinition しか取得できません。

すべてに感謝します

良い1日を

J.

4

3 に答える 3

1

したがって、このコードは私が望むことを正確に実行し、他のユーザーに提供します。

とにかくみんなに感謝します

                Node parent = (Node)session.getItem(path);//Jcr path to the parent node

                Node added = parent.addNode(newNodeName);//Add new node


                Workspace workspace = session.getWorkspace();                   
                NodeTypeManager ntMgr = workspace.getNodeTypeManager();

                NodeTypeRegistry ntReg=null;
                try {
                    ntReg = ((NodeTypeManagerImpl) ntMgr).getNodeTypeRegistry();
                } catch (ClassCastException e) {
                    e.printStackTrace();
                }

                NameFactory nameFactory = NameFactoryImpl.getInstance();
                Name namejcr = nameFactory.create(type);

                EffectiveNodeType effnodetype = ntReg.getEffectiveNodeType(namejcr);



                //Here i get all the property definition for this type of node, so from here i
                //can know which of them are mandatory
                PropDef[] pdefs = effnodetype.getAllPropDefs();
于 2010-11-09T13:22:09.140 に答える
0

プロパティが保護されているかどうかを判断するには、次のようにします。

PropertyDefinition propDef = property.getDefinition();
boolean isProtected = propDef.isProtected();

または、ノード タイプが特定のプロパティを特定の値に設定できるかどうかを判断するために、次の行に沿って何かを試してください。

Workspace workspace = session.getWorkspace(); 
NodeTypeManager ntMgr = wsp.getNodeTypeManager();
NodeType nt = ntMgr.getNodeType("nodeTypeName");
boolean canSet = nt.canSetProperty("propName", value);
于 2010-11-10T09:41:45.647 に答える
0

もちろん、それはしばらくの間です。

とオークが利用可能です。

しかし、今日は以下を使用できます。

javax.jcr.Property prop = xyz;
boolean isMandatoryProperty = prop.getDefinition().isMandatory(); 
于 2021-02-16T07:46:18.817 に答える